c# - windows service,Thread 和 Timer 哪个更好用?

标签 c# multithreading timer windows-services

<分区>

嗨,我是 Windows 服务的新手,我开发了一个 Windows 服务,使用线程在 OnStart() 中创建新线程,并使用该线程运行方法,并在下一次运行时使用 sleep 线程,但我的一位 friend 说这样更好使用定时器而不是线程,所以我想知道哪种方法是执行该程序的最佳方法?感谢您的帮助

最佳答案

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

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

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


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

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

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

关于c# - windows service,Thread 和 Timer 哪个更好用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18015310/

相关文章:

c# - Window.Show() 不显示控件,但 Window.ShowDialog() 显示控件 2

java - 持有多个锁的线程进入 wait() 状态。它会释放所有持有的锁吗?

.net - Windows 窗体计时器与单线程应用程序

java - Libgdx如何计算运行时间

c# - Backgroundworker ReportProgress事件不会触发

c# - 使用 Bearer Token 在 C# 中构建 post HttpClient 请求

c# - 使用 ASP.Net MVC 5 请求验证

c# - 如何将字符串属性绑定(bind)到 ToolStripTextBox?

Java:从 scheduleAtFixedRate 获取 future 的方法

linux - pthread_kill() 没有向主线程发送信号(主程序)