我正在WPF中编写一个应用程序。我有一个主线程和另一个 - 我计算的东西。在主线程中,我需要在完成其他线程后执行一个操作。我不能使用Join来获取额外的线程,因为我不想阻止主线程。我如何等待完成第二个线程,同时不阻止主线程?
答案 0 :(得分:3)
最简单的方法是使用backgroundworker并处理RunWorkerCompleted事件。
我还邀请你看看第3部分 Joseph Albahari {{3p>
答案 1 :(得分:2)
另一种简单的方法是使用任务并行库并使用continuations链接多个任务。
虽然它不能免除@康拉德的建议:阅读the threading book。这很有吸引力,完全值得努力。
答案 2 :(得分:0)
如果您正在创建自己的线程,请让工作线程在完成后调用回调方法:
public delegate void DoneDelegate (object calculationResults);
public class MyWorker
{
public DoneDelegate Done { get; set; }
public void Go()
{
object results = null;
// do some work
Done(results);
}
}
public class Main
{
public void StartWorker()
{
MyWorker worker = new MyWorker();
worker.Done = new DoneDelegate(DoneCallback);
System.Threading.Thread thread = new System.Threading.Thread(worker.Go);
thread.IsBackground = true;
thread.Start();
}
public void DoneCallback (object results)
{
// use the results
}
}