掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
BackgroundWorkerでRunWorkerCompletedが発生しない (ID:147381)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> For DI_Cnt = 1 To 50 > System.Threading.Thread.Sleep(50) > DI_Calc += 1 > Next UI スレッド(ウィンドウを作成するスレッド)から Sleep メソッド(あるいは Sleep API)を呼ぶことは避けてください。 ウィンドウを持たないスレッドから呼ぶのであれば問題ありませんが。 > 「If BackgroundWorker1.IsBusy = False Then」の部分でFalseが帰ってこないので永久にループし続けます。 DoEvents を呼び出すなどすれば、IsBusy プロパティが変化するようにはなります。 ……が、そもそもこういった「ループ監視」を行うことは避けてください。 これではメインスレッドがビジー状態になってしまいますので、IsBusy どころか RunWorkerCompleted の通知さえ受け取れなくなります。 ワーカースレッドの完了は、RunWorkerCompleted イベントで「通知」されてきますので、 わざわざ IsBusy の状態を監視し続ける必要はありません。 RunWorkerAsync 呼び出し後は、そのまま即座に Return 等で抜けてしまい、 完了処理は RunWorkerCompleted イベントにて行うようにしましょう。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.