Windows Service中的Timer ..这样可以缩放吗?会发生线程问题吗?这是不好的做法吗?

时间:2019-03-21 15:53:16

标签: c# .net multithreading timer windows-services

我想知道我应该对这种方法有什么关注。该代码将检查SQL表以执行计划的工作,在工作完成之前,我将更改计时器以不执行任何操作。 SQL触发器是否可行? Windows时间表上的控制台应用程序如何?


protected override void OnStart(string[] args) {
   this.workChecker = new Timer(new TimerCallback(DoWork), null, 0, 60*10*1000); // 10 minutes
   Thread.Sleep(Timeout.Infinite);
}

1 个答案:

答案 0 :(得分:0)

您不应阻止OnStart,所以不需要Thread.Sleep(Timeout.Infinite);。计时器选项可能有效,但是如您所见,存在一些重新输入问题(您应确保在上一个工作期间不会启动新作业,以避免出现竞争状况)。我建议您检查一下Quartz.NET库,它可以立即解决此类问题,并具有许多其他用于计划作业的功能。