我有一个控制台应用程序,我正在移植到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)
如果您使用三个BackgroundWorker
s,您可以使用该事件RunWorkerCompleted
来注意其中一个工作程序已完成:在启动工作程序之前将计数器设置为3然后递减并在调用方法中检查此计数器,RunWorkerCompleted
如果它达到0,则表示您已完成.
归档时间: |
|
查看次数: |
1842 次 |
最近记录: |