まず最初はまだ初心者ですから、少しでも忍耐力があれば感謝します:)BackgroundWorkerが別のBackgroundWorker(C#)を実行するのを待つ方法を教えてください。
私はこのことについて今日とても辛いです。
事は、私は3つの異なるbackgroundworkersを実行したいです。しかし、私は次のものを実行するのが終わるまで待つつもりです。
それぞれのバックグラウンド労働者は、完了までに時間が必要です。私はWaitOne()を使用しています。以前のバックグラウンドワーカーが完了したら、私は新しいUIを実行することができましたが、UIスレッドは3人のバックグラウンド作業者が終了するまでフリーズしています。
私は別のAutoResetEventを設定しています。これは、待機中および実行中のもの全体を処理するものです。ここで
はコードです:
AutoResetEvent _resetRIEvent = new AutoResetEvent(false);
AutoResetEvent _resetHEvent = new AutoResetEvent(false);
AutoResetEvent _resetSEvent = new AutoResetEvent(false);
await Task.Run(() => bgwTestResInd.RunWorkerAsync());
_resetRIEvent.WaitOne();
await Task.Run(() => bgwTestHipot.RunWorkerAsync());
_resetHEvent.WaitOne();
await Task.Run(() => bgwTestSurge.RunWorkerAsync());
_resetSEvent.WaitOne();
MessageBox.Show("Im done for real.");
はまた、それがこれを行うには許可されているのですか?
private void bgwTestResInd_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
_resetRIEvent.Set();
}
private void bgwTestHipot_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
_resetHEvent.Set();
}
private void bgwTestSurge_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
_resetSEvent.Set();
}
をリセットする順序で実行されます場合にはタスクを使用できるのであればBGWを使用していますか? – Servy
私は実際に初心者のプログラマーです。私は本当にどちらの方が良いかわからない。 – dgls61