我最近接手了旧版Windows服务,并且已在系统事件日志中写入以下事件:
事件ID:7034说明:
MyService服务终止
不料。它已经完成了X
时间。
我正在查看源代码,并在服务类库中找到以下代码模式:
(已简化为保护无辜者。)
public static void StartService()
{
//do some stuff...
ManageCycle();
}
public static void ManageCycle()
{
//do some stuff
ManageCycle();
}
此编码模式称为什么,可能会导致Windows服务关闭(即内存泄漏)吗?
最佳答案
这看起来像堆栈溢出异常模式。伊兰是正确的。使用while循环:
公共静态无效StartService()
{
//做一些事情...
isRunning = true;
ManageCycle();
}
公共静态无效ManageCycle()
{
while(isRunning)
{
//做一些事情并包装异常处理
}
}
公共静态无效StopService()
{
isRunning = false;
}