哪一个更适合在Windows服务,线程或计时器中使用?

时间:2013-08-02 11:03:27

标签: c# multithreading timer windows-services

您好我是Windows服务的新手我使用在OnStart()中创建新线程的线程开发了一个Windows服务,并使用该线程运行方法并使用睡眠线程到下一次运行时但我的一个朋友说它更好使用计时器比线程所以我想知道哪个是最好的方法来做程序?谢谢你的帮助

2 个答案:

答案 0 :(得分:3)

根据您的评论,您的目标是按特定时间间隔运行一些代码:

从概念上讲,使用计时器比使线程睡眠更好。这就是计时器的制作方法。如果您选择线程睡眠方法,我认为在实践中它仍然可以正常工作,尽管更好的做法是使用计时器。

还有第三种方法 - 使用作业调度程序。您可以使用windows task scheduler或更强大的quartz.netnuget package here)。


这真的是一个关于你如何重视语义正确性以实用主义的问题。

  • 从语义正确的角度来看,最好的方法是使用作业调度程序,因为您实际上想要安排作业。
  • 从务实的角度来看,最好的方法可能就是继续使用已经开发的服务,即使它使线程处于休眠状态,并将时间花在修改完全正常工作的代码上。

有关计时器与作业调度程序的更多意见:Best Timer for using in a Windows service

答案 1 :(得分:0)

这取决于你的想法。 Timer和Thread之间的区别在于Timer使用线程池中的线程,而Thread为任务使用了一个新线程。

您可以在此处阅读更多内容:http://social.msdn.microsoft.com/Forums/vstudio/en-US/c5b0e037-ccb5-42c0-bb0a-304572c8c8d2/timer-vs-thread-performance