我正在尝试编写无限期运行的Windows服务。用于Linux的Windows窗体和后台程序看起来并不算太糟糕,但也许我在Windows服务中只是非常无能。不像其他一些睡眠或计时器相关的问题,我已经在这里挖过,醒来或睡觉的时间可以是一个固定的时间间隔,但并不总是这样。程序从某些数据文件中读取数据,这些数据文件可能会指示它更改自己的时间表,并且必须在下一次起床时生效。这似乎很容易,因为一个控制台程序和行为完全有:C中的可调服务计时器
while (true)
{
// Calculate next time to run.
DateTime nextRun = NextWakeup();
TimeSpan nextTime = nextRun - DateTime.Now;
int sleepMs = (int)nextTime.TotalMilliseconds;
// Sleep until scheduled time
System.Threading.Thread.Sleep(sleepMs);
// Do a code cycle of more stuff here...
}
然而,当我尝试运行它作为服务的一部分,使其继续活跃在用户注销时,服务管理器固执地拒绝启动它。我得到了可爱的1053错误,“服务没有及时响应启动或控制请求。”
很多答案在这里有关问题的似乎暗示与在休眠线程的所有费用定时器去。如果我做了这样的事情而不是休眠/睡眠组合,我将如何去改变每次运行的计时器间隔?或者这一切都很好,我正在设置我的服务是错误的?
非常感谢提前!
你尝试把简单的代码和运行服务?解决方案可以用错误的方式编译 –