【发布时间】:2014-02-27 11:22:36
【问题描述】:
我有一个使用 Thread 启动的 Windows 服务。作为 Windows 服务安装后,我能够正确启动该服务,但是一旦我尝试停止该服务,它就会花费太多时间并且不会停止。我正在使用ManualResetEvent 停止Windows 服务这是我的代码。
protected override void OnStart(string[] args)
{
_thread = new Thread(DoWork);
_thread.Start();
}
private void DoWork()
{
while (!_shutdownEvent.WaitOne(0))
{
data = new byte[1024];
int recv = sock.Receive(data);
stringData = Encoding.ASCII.GetString(data, 0, recv);
}
sock.Shutdown(SocketShutdown.Both);
sock.Close();
}
catch (Exception DFGFD)
{
}
}
protected override void OnStop()
{
_shutdownEvent.Set();
_thread.Join(); // wait for thread to stop
}
}
}
请帮我解决这个问题。
【问题讨论】:
-
你的循环中有什么?会不会是socket关闭需要很长时间?
-
您是否附加了调试器以查看导致问题的部分?
-
@Markus 是的,它是一个从套接字读取的套接字程序
标签: c# multithreading windows-services