2011-12-05 98 views
2
Form form1 = new Form(); 
Thread newThread = new Thread(() => 
     form = form1 
); 
newThread.Start(); 
while(form == null) 
{ 
    WAIT? 
} 

任何人都可以帮助我如何使线程等待前进与执行?而不是使用thread.sleep?c#如何让线程等待

+0

为什么原因,你不想使用'Thread.Sleep'? – Otiel

回答

5

您可以使用ManualResetEvent

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

我认为newThread.Join()会在这种情况下是足够的... – flq

+0

@ user898569:有就有关事件等待MSDN一些好的文件句柄:HTTP://msdn.microsoft.com/en-us/library/ksb7zs2x (v = VS.80)的.aspx。我强烈建议你这个网站的多线程基础知识:http://www.albahari.com/threading/ – 0lukasz0

+0

@flq:我同意,如果这是唯一的线程正在做。但如果它真的是唯一的话,整个线程似乎是无用的。这就是为什么我认为该线程做的比OP更多。 –

-1

为FLQ提到你可以使用的Thread.join,将允许线程完成正在执行的任何,你可以在该点之后继续......然而,由于你工作,如果你从那里加入你可能会阻塞UI线程窗体应用程序...

你应该尝试解决这个,而不是阻止不同的模式......使用委托或事件时,信号一些东西已经完成...也被称为异步处理。