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

C# .NET线程:如何等待其他线程完成某些任务,c#,.net,multithreading,C#,.net,Multithreading,假设我有办法 void方法(操作回调) 此方法在后台线程中执行一些工作,然后调用回调。问题是-如何在调用回调之前阻止当前线程 有一个例子 bool finished = false; SomeMethod(delegate{ finished = true; }); while(!finished) Thread.Sleep(); 但我相信应该有更好的方法来检查线程。Join()会起作用 您可以使用AutoResetEvent在线程完成时发出信号 检查此代码段: AutoRese

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

有一个例子

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

但我相信应该有更好的方法来检查
线程。Join()
会起作用


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

检查此代码段:

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

Thread.Join的问题是,另一个线程在调用回调时没有完成。如果要阻止当前线程,直到后台线程上的工作完成,是否可以改为在当前线程上执行工作?否,不幸的是,我无法在当前线程中完成这项工作。您是否考虑过将等待后的代码放入线程中,或者使用回调/事件?您所描述的是一个同步操作。可能还有更多的信息吗?也许当前的线程也是Guitanks的主线程,它确实有效。它的工作速度比线程睡眠快吗?旋转锁(在while循环中不断检查标志,可能使用
线程。睡眠
)可能在阻塞时间非常短的情况下更快,否则,
自动resetEvent
就是一种方法。