通常、C# で backgroundWorker をキャンセルしたい場合は、次のようにします。
while (backgroundWorker1.IsBusy)
{
backgroundWorker1.CancelAsync();
autoResetEvent1.WaitOne(BGW_CANCEL_TIMEOUT);
}
1 つのアプリケーションには、多数の backgroundWorker があります。ヘルパー関数を使用して backgroundWorkers をキャンセルすることは有効ですか?
CancelBackgroundWorker(BackgroundWorker bgw, AutoResetEvent are)
{
while (bgw.IsBusy)
{
bgw.CancelAsync();
are.WaitOne(BGW_CANCEL_TIMEOUT);
}
}
私の懸念は、問題のオブジェクトを関数に渡す代わりにコピーが作成され、それによって関数を持つ目的が無効になることです。この関数を使用する主な目的は、コード スペースを削減し、アプリケーション コードをより読みやすく、保守しやすくすることです。