2013-03-19 21 views
0

我有一個父線程產生多個任務/工作線程(由其他人完成)的場景。最後,我需要執行一個與作業線程無關的額外任務。在定時器過期之前檢查任務是否成功C#(多線程)

我需要的是執行這個新的任務(檢查移除服務器上文件的存在),只要一個固定的時間,即30分鐘的最大值,並以固定的時間間隔重複該過程,即每個2分鐘,直到條件滿足。如果確認成功,則應退出到主線程(父 - 父線程需要等待此特定任務在終止之前結束)。

對於C#多線程,我很新,如果我們需要對這種情況進行線程化。那麼,有人可以給我一個指導。

 
Main thread 
{ 
Child threads0...n 
All Done 

For as long as n minutes 
(R) Every m minute, check for something 
If succeed, exit 
If not, continue waiting for m minute, then (R) 
} 
+1

我建議對發明了一種新的編程語言只是告訴我們你想要做的目的。這不是很清楚。 – spender 2013-03-19 16:17:37

+0

可能與此帖子重複:http://stackoverflow.com/questions/8771364/best-method-to-block-until-certain-condition-is-met – David 2013-03-19 16:30:37

回答

1

嘗試是這樣的:

Task.Factory.StartNew(() => 
    { 
    while (!CheckForSomething()) 
     Task.Delay(TimeSpan.FromMinutes(2)); 

    }).Wait(TimeSpan.FromMinutes(30)); 
+0

我假設你知道如何實現CheckForSomething().. – dmg 2013-03-19 16:37:43

+0

謝謝dmg,我很抱歉沒有提前注意到這個問題,但是我正在運行.NET 4.0,而不是4.5(Task.Delay()不在.NET 4.0中)。 – Malvon 2013-03-19 17:55:32

+0

在這種情況下,您可以替換Thread.Sleep – dmg 2013-09-13 20:18:55

相關問題