线程和定时器哪个更适合在windows服务中使用

本文关键字:windows 服务 定时器 线程 | 更新日期: 2023-09-27 18:25:53

嗨,我是windows服务的新手。我使用在OnStart()中创建新线程的线程开发了一个windows服务,并使用该线程运行方法,并使用睡眠线程进行下一次运行,但我的一个朋友说用定时器比线程更好,所以我想知道哪种方法是最好的程序?感谢的帮助

线程和定时器哪个更适合在windows服务中使用

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

从概念上讲,使用计时器比让线程休眠要好。这就是定时器的用途。如果你选择线程睡眠方法,我认为在实践中它无论如何都会很好地工作,尽管更好的做法是使用定时器。

还有第三种方法——使用作业调度程序。您可以使用windows任务调度程序或更强大的quartz.net(此处为nuget包)。


这实际上是一个关于你如何将语义正确性视为实用主义的问题。

  • 从语义正确性的角度来看,最好的方法是使用作业调度程序,因为您实际上想要调度作业
  • 从实用的角度来看,最好的方法可能是继续使用已经开发的服务,即使它会使线程休眠,并将时间花在修改完全可用的代码之外的其他事情上

关于定时器与作业调度程序的更多意见:在Windows服务中使用的最佳定时器

我想这取决于你在做什么。Timer和Thread之间的区别在于,Timer使用线程池中的一个线程,而Thread则为任务指定一个新线程。

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