【问题标题】:Which one is better to use in windows service, Thread or Timer? [closed]在 windows 服务、Thread 或 Timer 中哪个更好用? [关闭]
【发布时间】:2013-08-02 11:03:27
【问题描述】:

您好,我是 windows 服务的新手,我已经开发了一个 windows 服务,它使用在 OnStart() 中创建新线程并使用该线程运行方法并在下一次运行时使用睡眠线程的线程,但我的一位朋友说它更好使用计时器而不是线程,所以我想知道执行程序的最佳方法是什么?感谢您的帮助

【问题讨论】:

  • 线程和计时器完全不同,Thread.Sleep 是一个糟糕的方法,但如果这是你的问题
  • @Sayse 是的,但是开发 Windows 服务有什么更好的方法
  • 不知道你的windows服务是什么,这里没人能回答
  • @user2553512 你的目标是在特定的时间间隔(比如每小时)运行一些代码,并且在其间什么都不做吗?
  • @lightbricko 是的,我想在时间间隔内从 Web 服务调用一个特定方法,所以我在 Windows 服务中的线程的帮助下进行操作,并将线程休眠到下一次运行

标签: c# multithreading timer windows-services


【解决方案1】:

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

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

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


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

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

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

【讨论】:

    【解决方案2】:

    这取决于我想你在做什么。 Timer 和 Thread 的区别在于 Timer 使用线程池中的一个线程,而 Thread 专门为任务分配一个新线程。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2011-01-05
      • 2010-11-24
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多