2010-12-13 15 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(); 
} 

但这仅是有道理的,如果你没有一个主持人法(序贯处理)或者你的方法不应该彼此了解。