我被告知制作 Windows 服务的方式如下:
Thread serviceThread = new Thread(new Thread(runProc())
Boolean isRunning = true;
if (_isRunning)
{
serviceThread.Start();
}else
close and log service
void runProc()
{
while(_isRunning)
{
//Service tasks
}
_isRunning = false;
}
到目前为止,这对我来说效果很好,但现在我需要做一个有重大突破的服务,一次最多 2 小时。此外,我已经开始使用计时器,因此除了停止 runProc() 一遍又一遍地运行之外,在无限循环中没有做任何事情,我可以想象这是不好的,因为正在制作和重新制作线程很多。
我的问题是,我已经读过将 Thread.Sleep(big number) 放在那个 while(_isRunning) 无限循环中是不好的做法,这是真的吗?如果是这种情况,我如何绕过不断运行的循环并使用大量资源?现在在循环中实际上没有做任何事情,这一切都在我的计时器的滴答事件中处理,我有一个循环的唯一原因是停止 runProc 结束。
非常感谢,如果我解释得不好,很抱歉