Windows服务不会停止“启动”

时间:2013-04-24 12:55:49

标签: visual-studio-2010 service

我已经创建了一个服务和一个安装程序。我在电脑上安装了我的服务。在服务屏幕中,我可以看到该服务正在启动。它不会停止开始,我不能暂停,没有。我唯一能做的就是卸载。

我已经尝试将Visual Studio附加到进程,但没有真正发生。我该如何调试此服务?我想知道发生了什么。

1 个答案:

答案 0 :(得分:1)

如果您的OnStart处理程序中运行了太多/所有代码,通常会发生这种情况 - 您打算在那里启动并返回。只有在您返回后才认为您的服务已经开始。

您通常会创建一个或多个新的Thread来运行您想要一直运行的代码,Start()然后返回。或者创建隐式运行自己的线程的对象(例如WCF的ServiceHost)。

然后,OnStop的工作是优雅地关闭它们 - 例如<{3}} Set然后ManualResetEvent在这些主题上。

例如,您的课程可能看起来像这样(未经过测试)

public class MyService : ServiceBase {
   private ManualResetEvent _stop = new ManualResetEvent(false);
   private Thread _worker;

   public override void OnStart(string[] args) {
    _worker = new Thread(DoStuff);
    _worker.Start();
   }

   public override void OnStop() {
    _stop.Set();
    _worker.Join();
   }

   private void DoStuff() {
    while(!_stop.WaitOne(0)) {
     //Do something useful here.
    }
   }
 }