调试窗口服务

Den*_*ish 2 c# debugging windows-services

我想调试窗口服务.我应该在main()中编写什么来启用窗口服务中的调试.我正在使用C#开发窗口服务.

#if(DEBUG)
      System.Diagnostics.Debugger.Break();
      this.OnStart(null);
      System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
 #else
      ServiceBase.Run(this);
 #endif
Run Code Online (Sandbox Code Playgroud)

我写了上面的代码段,但在线(这

Oti*_*iel 10

我个人使用这种方法来调试Windows服务:

static void Main() {

    if (!Environment.UserInteractive) {
        // We are not in debug mode, startup as service

        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[] { new MyServer() };
        ServiceBase.Run(ServicesToRun);
    } else {
        // We are in debug mode, startup as application

        MyServer service = new MyServer();
        service.StartService();
        System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
    }
}
Run Code Online (Sandbox Code Playgroud)

并在您的MyServer类中创建一个将使用该OnStart事件的新方法:

public void StartService() {
    this.OnStart(new string[0]);
}
Run Code Online (Sandbox Code Playgroud)