私のアプリケーションでは、Bitmap
オブジェクトを描画するスレッドを作成しました。描画が完了するform.Invoke(form.Refresh)
と、メイン フォームにビットマップを描画するスレッドが呼び出されます。(form
私のアプリケーションのメインフォームへの参照です。)
問題Invoke
: 他のスレッドが UI スレッドからのコールバック メッセージを待機しているときに (呼び出しのために) フォームを閉じると、スレッドが無期限に (?) 待機し、本質的にスタックして、アプリケーションが妨げられることに気付きました。閉店から。
BeginInvoke
スレッドの作業でフォームを更新するのにかかる時間を考慮する必要があるため、私のプログラムでは使用は意味がありません。
Q:これを防ぐ最善の方法は何ですか?
編集:私はいくつかの場所でそれは悪い考えだと読んだことがありますが、これに対処する唯一の方法はThread.Abort()
. Invoke
呼び出しでスタックしただけなので、フラグなどを使用してスレッドを閉じることはできません。
編集 2:明確にするために、私が探しているのは、Invoke
コールバックの待機を停止して作業を続行する必要があることをワーカー スレッドに伝える方法です。