WPF中的线程问题

时间:2011-02-09 15:01:20

标签: c# wpf multithreading visual-studio-2010

我正在WPF中编写一个应用程序。我有一个主线程和另一个 - 我计算的东西。在主线程中,我需要在完成其他线程后执行一个操作。我不能使用Join来获取额外的线程,因为我不想阻止主线程。我如何等待完成第二个线程,同时不阻止主线程?

3 个答案:

答案 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
    }
}