2011-12-05 97 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線程窗體應用程序...

你應該嘗試解決這個,而不是阻止不同的模式......使用委託或事件時,信號一些東西已經完成...也被稱爲異步處理。