2012-03-10 13 views
0

WinFormsアプリケーションにボタンとWebブラウザコントロールがあります。ボタンをクリックするとブラウザが起動しますが、ページが読み込まれるまでブラウザコントロール用に別のスレッドを使用してもアプリケーションがハングアップします。Webブラウザコントロールがアプリケーションをハングします

ページの読み込み中にアプリケーションがハングしないように、どうすれば処理できますか? .navigate方法の後

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

をSystem.Threadingています。 –

+0

どのWebブラウザコントロールを使用したか説明してください。人々がすぐにそのアイデアを知るためのリンクを含めることはできますか? – oleksii

+0

vs 2010ツールボックスを含むWebブラウザ – motevalizadeh

答えて

0

、これを行う...これはスレッドで整理する必要があり

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

、.busyは私の他のウェブを見て、WB制御のバージョンに.isbusy可能性がありウェブブラウザが本当にウェブページをロードするまで、実行を一時停止するための適切でより詳細な方法を実装したい場合は、ブラウザ関連の回答

ケット私はそれがあなたのために働く方法を知っています。

1

同様の問題がありましたが、ディスパッチャを使用して問題が解決されました。バックグラウンドワーカーを使用すると、コードの背後にいるのでエラーが発生します。

ボタンをクリックしてください。上記のため

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

名前空間には、スレッドで `go`を実行しないでください

+0

WinFormsでは、代わりにDispatcher.CurrentDispatcherを使用する必要があります。それから少なくとも幸せな日のシナリオで働いています(これまでのところネットワーク問題を引き起こす方法は見つけられませんでした)。 –

関連する問題