如何通知父线程所有子线程都已终止?

And*_*tin 7 c# multithreading

我有一个控制台应用程序,我正在移植到WPF.该应用程序有3个工作线程,在将一些输出结果打印到屏幕之前,它们都连接到主线程.我的理解是,如果我尝试在WPF应用程序中执行相同的操作,GUI将被阻止,并且不会对用户产生反应.那么如何通知父线程所有线程都已完成其工作?我认为解决方案将涉及委托和事件(或者可能是BackgroundWorker?),但我不清楚如何在线程终止时调用回调.

原始代码:

foreach (Thread t in threadList)
{
                t.Start();
}

foreach (Thread t in threadList)
{
                t.Join();
}

// print some results here
Run Code Online (Sandbox Code Playgroud)

Hin*_*nek 6

如果您使用三个BackgroundWorkers,您可以使用该事件RunWorkerCompleted来注意其中一个工作程序已完成:在启动工作程序之前将计数器设置为3然后递减并在调用方法中检查此计数器,RunWorkerCompleted如果它达到0,则表示您已完成.