我正在编写一个Windows服务程序,一旦启动就会每隔X小时运行一次。完成的过程相当密集,因此我想使用后台工作进程。我使用设置文件存储运行间隔时间和服务最后运行时间。
我不确定最佳实现方式 - 我希望该服务在空闲时占用尽可能少的资源,并且在运行时需要在后台工作者中运行、报告其工作内容,然后返回到空闲模式。
我考虑过使用两个后台工作者。第一个工作者将是服务的私有本地变量,运行类似以下内容:
我不确定最佳实现方式 - 我希望该服务在空闲时占用尽可能少的资源,并且在运行时需要在后台工作者中运行、报告其工作内容,然后返回到空闲模式。
我考虑过使用两个后台工作者。第一个工作者将是服务的私有本地变量,运行类似以下内容:
while (true)
{
//create new background worker and run
Thread.Sleep(Settings.Default.SleepTimeHours * 3600000);
}
在循环的每个迭代中创建一个子工作线程,并在完成后销毁。为了支持取消操作,我认为我必须在服务中拥有第二个工作线程的本地实例,但如果进程当前未运行,则该实例将为null。当次要工作线程完成时,它将发送我的报告,设置设置文件中的最后运行时间,然后处理工作线程并将引用设置为null。
我想知道是否有更好的方法或最佳做法。
谢谢