我有一个带有多个后台工作线程的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个实例。 请指导我如何避免在所有线程停止之前启动服务。