2011-05-09 94 views
0

我需要创建一些windows服务,它会每隔一小时经常执行一次。问题是 - 我应该使用哪个计时器控制:System.Timers.Timer或System.Threading.Timer之一?我在问,因为我一直在通过论坛阅读,我对这两个问题都得到了一些混合评论。另外,由于我对编程非常陌生,所以解释起来很难。谢谢。如何设置Windows Service应用程序,C#的自动重新启动?

+1

请注意,您实际上可能想要使用计划任务,而不是使用服务来执行定期重复任务。 – 2011-05-09 15:42:05

回答

0

我使用System.Timers.Timer在我的Windows服务。这很容易控制和挂钩。当您键入“myTimer.Elapsed + = ...”时,VS 2010的Intellisense甚至会创建已用事件处理程序。

您也可以在事件处理程序开始时停止计时器,并在最后重新启动计时器要在事件处理程序在长时间运行处理完成之前触发定时器。例如:

System.Timers.Timer myTimer; 
void Main() 
{ 
    myTimer = new System.Timers.Timer(1000); 
    myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed); 
    myTimer.Start(); 
} 

void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
{ 
    myTimer.Stop(); 
    // process event 
    myTimer.Start(); 
} 
+0

你可以一步一步等待这段代码正在做什么?我相信我了解它,但我不完全确定。这是否说每秒都做什么功能/代码放置在“//处理事件”?谢谢。 – 2011-05-10 19:23:42

+0

@Dante - myTimer将在myTimer.Start()后的一秒钟内调用myTimer_Elapsed。一旦进入myTimer_Elapsed,myTimer停止,你的处理代码被执行(无论你想在定时器激发时发生什么),然后myTimer重新启动。如果您的处理在下一个时间间隔发生之前完成,则您不必在每次处理已发生事件时都停止并启动每个计时器的计时器。 – 2011-05-10 23:34:43

相关问题