これは私のコードです。
BackgroundWorker exportWorker = new BackgroundWorker();
private void btnOK_Click(object sender, RoutedEventArgs e)
{
exportWorker.DoWork += new DoWorkEventHandler(ExportWorkerDoWork);
exportWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(ExportWorkerRunWorkerCompleted);
exportWorker.RunWorkerAsync();
}
void ExportWorkerDoWork(object sender, DoWorkEventArgs e)
{
MethodToPerformInThisThread();
**Dispatcher.Invoke(new Action(() => {MethodofAnotherThreadThatChangesUIStuff();}**
}
void ExportWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
- 初めてOK ボタン (
btnOK_Click
) をクリックすると、先に進み、すべてが正常に実行されます。 - ここで、コードの実行が終了した後で [OK] ボタンを 2 回クリックすると、太字のコードが 2 回実行されます。つまり、メソッド
MethodofAnotherThreadThatChangesUIStuff();
が 2 回続けて呼び出されます。 - 繰り返しますが、OK ボタンを 3 回クリックすると、
MethodofAnotherThreadThatChangesUIStuff();
3 回続けて呼び出されます。 - 等々。
MethodofAnotherThreadThatChangesUIStuff();
どのクリックであっても、一度だけ呼び出されるようにします。つまり、一般的にはそのように機能するはずです。
ここで何が欠けていますか?
どんな助けでも本当に感謝します。