我最近接手了旧版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;
}

07-24 09:33