.NET线程:如何等待其他线程完成某项任务

时间:2010-05-18 05:19:35

标签: c# .net multithreading

假设我有方法 void SomeMethod(Action回调) 此方法在后台线程中执行一些操作,然后调用回调。问题是 - 如何在调用回调之前阻止当前线程?

有一个例子

bool finished = false;
SomeMethod(delegate{
 finished = true;
});
while(!finished)
  Thread.Sleep();

但我确信应该有更好的方法

2 个答案:

答案 0 :(得分:4)

您可以使用AutoResetEvent在线程完成时发出信号。

检查此代码段:

    AutoResetEvent terminateEvent = new AutoResetEvent(false);
    bool finished = false;
    SomeMethod(delegate
    {
        terminateEvent.Set();
    });
    terminateEvent.WaitOne();

答案 1 :(得分:1)

检查Thread.Join()是否有效

Example of this