我正在调用ChannelServer.ListeningThread.Abort
以下线程,但似乎没有任何反应。我想更具体一些,但我想不出更多。似乎没有ThreadAbortException
抛出,并且无论阻塞侦听器如何都应该抛出这个异常(它在阻塞接收的线程上完美运行)。
重要编辑:使用 aManualResetEvent.WaitOne
而不是AcceptSocket
,正如 Lyrik 建议用于测试的那样,它可以完美运行。怎么会AcceptSocket
堵ThreadAbortException
?
链接:这个论坛帖子似乎讨论了同样的问题,虽然我无法弄清楚它:http ://www.tek-tips.com/viewthread.cfm?qid=319436&page=413
ChannelServer.ListeningThread = new Thread(new ThreadStart(delegate()
{
Log.Inform("Waiting for clients on thread {0}.", Thread.CurrentThread.ManagedThreadId);
while (true)
{
try
{
new Thread(new ParameterizedThreadStart(ChannelClientHandler.Initialize)).Start(ChannelServer.Listener.AcceptSocket());
}
catch (ThreadAbortException)
{
Log.Inform("Aborted client listening thread {0}.", Thread.CurrentThread.ManagedThreadId);
break;
}
}
}));
ChannelServer.ListeningThread.Start();