【问题标题】:Windows Service needs to wait, Thread.Sleep?Windows Service 需要等待,Thread.Sleep?
【发布时间】:2010-04-06 20:25:36
【问题描述】:

我有一个 c# windows 服务需要每 60 秒(或配置文件中设置的任何间隔)执行一次数据库查询。我在 while 循环中使用 Thread.sleep(60) 来完成此操作。有没有更好的方法来做到这一点?

谢谢

【问题讨论】:

  • 你关心查询运行在哪个线程上?
  • 不。我只是想确保我不会遇到任何问题......看起来计时器会更好地工作。没有循环,这很好。

标签: c# .net windows service


【解决方案1】:

您可以使用System.Threading.Timer 每 60 秒运行一次代码,而不是在休眠线程中运行。

【讨论】:

  • 当然,这意味着如果您的代码运行时间超过 60 秒,您将遇到多线程问题,例如日志文件访问。我不建议这样做。
【解决方案2】:

这取决于你想做什么。如果你想要一个(更)精确的方法,你可能想使用System.Threading.Timer。关于 thread.sleep 的一件事是它确实是“sleepatleastuntil ...”。处理器将忽略您的线程,直到睡眠时间过去。下次它会给你的线程优先级,在睡眠时间过去之后,它会。

这通常会非常接近所需的间隔,但可能会更长。除非你真的打算让步,否则不要让步。

【讨论】:

    【解决方案3】:

    使用Timer 每 60 秒触发一次进程,而不是强制进程休眠。

    【讨论】:

      猜你喜欢
      • 2013-08-25
      • 1970-01-01
      • 2012-12-08
      • 2015-11-20
      • 2013-07-15
      • 2013-10-24
      • 2012-11-05
      • 1970-01-01
      相关资源
      最近更新 更多