在停止所有线程之前在服务管理器中重新启动调用

时间:2018-06-21 11:03:56

标签: c# windows-services

我有一个带有多个后台工作线程的Windows服务。 在OnStart中,我将调用每个线程Start();在OnStop中,我将调用CancelAsync(),并使用正确的thread.Sleep

我在重新启动时遇到问题。当用户单击服务管理器中的重新启动时,出现以下错误:

  

“ System.IO.IOException:所有管道实例都处于繁忙状态。”

原因如下代码:

this.serverStream =
        new NamedPipeServerStream(SERVER_PIPE_NAME, PipeDirection.In, 1, PipeTransmissionMode.Message ,
          PipeOptions.Asynchronous);

我只能有一个NamedPipeServerStream实例。在重新启动期间,所有线程都不会停止,因此会获得2个实例。 请指导我如何避免在所有线程停止之前启动服务。

0 个答案:

没有答案