ここではすべてのBackgroundWorker
オブジェクトが完成するまで待つ方法です。私はあなたがC#
を使用している願っています:
上記とは別に
static void Main(string[] args)
{
int noOfbackgroundWorker = 5;
WaitHandle[] waitHandles = new WaitHandle[noOfbackgroundWorker];
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < noOfbackgroundWorker; i++)
{
var bg1 = new BackgroundWorker();
var handle = new EventWaitHandle(false, EventResetMode.ManualReset);
bg1.DoWork += delegate(object sender, DoWorkEventArgs e) { Thread.Sleep(i * 1000); };
bg1.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e) { handle.Set(); };
waitHandles[i] = handle;
bg1.RunWorkerAsync();
}
WaitHandle.WaitAll(waitHandles);
Console.WriteLine("Done in "+sw.Elapsed.Seconds + " seconds");
Console.ReadKey();
}
BackgroundWorker
のない低いがない場合、単に各ワーカーは、各ワーカー完全な状態をマッピングし、そのすべてのRunworkerCompleted
イベントハンドラから、共通のメソッドを呼び出すためのbool
変数を設定します渡された場合はif(a && b && c.....)
の条件があり、UI
に通知してください。
あなたはMVVMを使用しての代わりに、UIを更新する必要があります。 – Aron
ねえ、答えが助けましたか? –