如何设置Windows服务应用程序的自动重新启动,C#?

如何设置Windows服务应用程序的自动重新启动,C#?,c#,windows-services,restart,C#,Windows Services,Restart,我需要创建一些windows服务,它将每小时执行一次。问题是-我应该使用哪个计时器控件:System.Timers.timer还是System.Threading.timer one?我之所以这么问,是因为我一直在阅读论坛上的文章,我对这两个方面的评论褒贬不一。而且,这些解释有点难以理解,因为我对编程相当陌生。谢谢。阅读@Jon Skeet的Timers文章:我在Windows服务中使用System.Timers.Timer。它很容易控制和连接。VS 2010的Intellisense甚至在您键

我需要创建一些windows服务,它将每小时执行一次。问题是-我应该使用哪个计时器控件:System.Timers.timer还是System.Threading.timer one?我之所以这么问,是因为我一直在阅读论坛上的文章,我对这两个方面的评论褒贬不一。而且,这些解释有点难以理解,因为我对编程相当陌生。谢谢。

阅读@Jon Skeet的Timers文章:

我在Windows服务中使用System.Timers.Timer。它很容易控制和连接。VS 2010的Intellisense甚至在您键入“myTimer.Appeased+=…”时创建运行事件处理程序

如果不希望在事件处理程序完成长时间运行的处理之前触发计时器,也可以在事件处理程序开始时停止计时器,并在结束时重新启动计时器。例如:

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();
}

请注意,您实际上可能希望使用计划任务,而不是使用服务来执行定期重复的任务。您能逐步完成这段代码正在执行的任务吗?我相信我能理解,但我不能完全肯定。这是否意味着每秒钟都要在“//process event”所在的位置执行什么功能/代码?谢谢。@Dante-myTimer将在myTimer.Start()一秒钟后调用myTimer。一旦在myTimer_内运行,myTimer将停止,处理代码将被执行(无论计时器启动时希望发生什么),然后myTimer将重新启动。如果在下一个间隔发生之前完成了处理,则不必在每次处理经过的事件时都停止和启动计时器。