0

私はBackgroundWorkersを集中的に使用してWindowsフォームアプリケーションを作成していますが、心配な質問があります。状況の例を次に示します。

  1. BackgroundWorkerは、時間のかかる操作を実行します。
  2. BackgroundWorkerの実行中に、ユーザーがフォームのボタンを押します。
  3. Button.Clickイベントハンドラーは実行を開始し、いくつかのステートメントを完了しますが、さらに多くのステートメントがあります。
  4. この時点で、BackgroundWorkerはタスクを完了するか、例外を発生させるため、コントロールはBackgroundWorker.RunWorkerCompletedイベントハンドラーに移動する必要があります。

さて、私の質問は次のとおりです。BackgroundWorker.RunWorkerCompletedイベントハンドラーがButton.Clickイベントハンドラーの実行を中断する可能性はありますか?

4

1 に答える 1

0

DoWork終了すると、をRunWorkerCompleted起動したスレッドで呼び出されますBackgroundWorker。それがメインスレッドだとしましょう。これは、メインスレッドのメッセージキューにメッセージを投稿することを意味します。メインスレッドが現在メッセージを処理している場合(たとえば、Button.Clickイベント)、RunWorkerCompleted順番が来るまでスレッドのメッセージキューに留まります。意味-ボタンイベントハンドラーとの割り込み/衝突はありません。

于 2012-03-06T21:12:10.580 に答える