c#如何使线程等待

时间:2011-12-05 12:47:07

标签: c# multithreading

Form form1 = new Form();
Thread newThread = new Thread(() => 
        form = form1
);
newThread.Start();
while(form == null)
{
     WAIT? 
}

在继续执行之前,任何人都可以帮助我如何进行线程等待吗?而不是使用thread.sleep?

2 个答案:

答案 0 :(得分:5)

您可以使用ManualResetEvent

var mre = new ManualResetEvent(false);
Form form1 = new Form();
Thread newThread = new Thread(() => {
        form = form1;
        mre.Set();
});
newThread.Start();
mre.WaitOne();

答案 1 :(得分:-1)

正如flq所提到的,你可以使用thread.join,这将允许线程完成它正在做的任何事情,你可以在那之后继续...但是,因为你正在处理一个表单应用程序,你可能会阻止它ui线程,如果你从那里加入......

你应该尝试一种不同的模式来修复它而不是阻塞...使用委托或事件来表示什么时候完成...也称为异步处理。