2010-12-13 16 views
4

你知道任何C#庫,它們允許你對一系列動作進行排序,即。每個動作在前一個完成時執行,或者更好,在特定時間間隔發生後執行。C#定時動作庫

謝謝。

+1

我不太清楚你在找什麼在這裏,所謂的順序沒有作任何努力來調用多個線程將下一個方法順序運行方法被當最後端調用。如果你想在方法之間進行預定義的暫停,可以通過使當前線程休眠一段給定的秒數,或者使用一個退出條件來循環,該退出條件要求它在給定時間之後或之後進行。你能澄清你需要什麼嗎? – Robb 2010-12-13 00:13:36

+1

IMO很明顯他想做什麼。它甚至是一個非常普遍的要求,Microsoft已經通過任務並行庫中Task對象的.ContinueWith()方法爲其實施了專門的支持。 – 2010-12-13 00:21:12

回答

2

http://msdn.microsoft.com/en-us/library/dd537609.aspx

的Task.ContinueWith方法讓 時指定 的先行任務完成後要開始的任務。

var task = Task.Factory.StartNew(() => GetFileData()) 
             .ContinueWith((x) => Analyze(x.Result)) 
             .ContinueWith((y) => Summarize(y.Result)); 
+1

你應該提到,'Task'只能在.net 4 – 2010-12-13 00:14:02

+0

中有效,但除非在問題中另有說明,否則假定代碼能夠在最新的.Net版本上運行應該是安全的。 – 2010-12-13 00:18:26

+0

是的,'Task'正是我所要找的,謝謝。 – ocodo 2010-12-13 00:56:49

2

用於計時嘗試quartz.net。爲了同步動作,使用例如。事件waithandlesMonitor.Wait()Monitor.Pulse() ...

否則,你可以處理一組動作,例如

var methods = new List<Func> 
{ 
    FooMethod1, 
    FooMethod2 
} 
foreach (var method in methods) 
{ 
    method.Invoke(); 
} 

但這僅是有道理的,如果你沒有一個主持人法(序貫處理)或者你的方法不應該彼此瞭解。