2012-03-10 73 views
0

我在WinForms應用程序上有一個按鈕和一個Web瀏覽器控件。當我點擊一個按鈕時,它啓動一個瀏覽器,但直到加載頁面時,即使我使用單獨的線程進行瀏覽器控制,我的應用程序仍會掛起。Web瀏覽器控件掛起我的應用程序

如何處理它,以便在頁面加載時我的應用程序不會掛起?

private void button1_Click(object sender, EventArgs e) 
{ 
    Thread mythread = new Thread(new ThreadStart(go));  
    mythread.IsBackground = true; 
    mythread.Name = "mythread"; 
    mythread.Start(); 
} 

void go() 
{ 
    webBrowser1.Navigate("google.com"); 
} 
+1

不要在線程中執行'go'。 – 2012-03-10 22:54:46

+0

您能否描述您使用了哪種網頁瀏覽器控件,可能包含鏈接以便人們快速瞭解它? – oleksii 2012-03-10 22:58:13

+0

包含在vs 2010工具箱中的網絡瀏覽器 – motevalizadeh 2012-03-10 23:08:44

回答

0

的.navigate方法後,做到這一點...

Do 
Sleep 100 
Doevents 
Loop until webbrowser1.busy = true and webbrowser1.readystate = 4 

這應該排序在螺紋出來,.busy可能是你的WB控制版本.isbusy,看看我的其他網站瀏覽器相關的答案,如果你想實現一個適當的,更詳細的方法暫停執行,直到網頁瀏覽器真正完成加載網頁。

讓我知道它是如何解決你,如果我可以有任何進一步的幫助。

1

我有類似的問題,使用調度程序解決了該問題。由於您在代碼背後嘗試使用後臺工作人員會給您帶來錯誤。

嘗試下面的按鈕點擊。

Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { go(); })); 

命名空間爲上面的System.Threading

+0

在WinForms中,需要使用Dispatcher.CurrentDispatcher。然後,至少在快樂的一天中(至今沒有找到一種激發網絡問題的方法)。 – 2017-06-16 08:31:25