BackGroundWorker を使用して一連のタスクを実行する c# アプリケーションが 1 つあります。
private void buttonStartCheckOut_Click(object sender, EventArgs e)
{
BackgroundWorker checkOuter = new BackgroundWorker();
checkOuter.DoWork += new DoWorkEventHandler(checkOuter_DoWork);
checkOuter.RunWorkerAsync();
checkOuter.RunWorkerCompleted += new RunWorkerCompletedEventHandler(checkOuter_RunWorkerCompleted);
}
void checkOuter_DoWork(object sender, DoWorkEventArgs e)
{
if (textBoxCICheckOut.Text != "")
CheckOutCI();
if (textBoxCACheckOut.Text != "")
CheckOutCA();
if (textBoxCAuthCheckOut.Text != "")
CheckOutCAuth();
if (textBoxCLCheckOut.Text != "")
CheckOutCL();
if (textBoxCCCheckOut.Text != "")
CheckOutCC();
}
ご覧のとおり、スレッドは 2 つしかありません。1 つは GUI 用、もう 1 つは二次タスク用です。
すべての機能がいつ終了するかを追跡するのは簡単です。
ここで、CheckOutCI()、CheckOutCA() などに別のスレッドを作成して、より高速にしたいと考えています。5 つのバックグラウンド ワーカーを作成すると、ちょっと汚いように見えます。
質問したい
のは、すべての関数の実行がいつ終了したかを追跡するにはどうすればよいかということです。
いずれかの関数が例外を返した場合、それをユーザーに表示し、ユーザーにユーザーを修正して再試行するように依頼します。私の質問を適切に説明できることを願っています。
彼の投稿に対する私のコメントに従って、wdavo でコードを編集してください。