Кажется, что Thread.Abort не генерирует исключение ThreadAbortException из-за AcceptSocket
я звонюChannelServer.ListeningThread.Abort
в следующей теме, однако, похоже, ничего не происходит. Я хотел бы быть более конкретным, но я не могу думать ни о чем другом. Кажется, нетThreadAbortException
это выбрасывается, и это исключение должно быть выброшено независимо от блокирующего прослушивателя (он отлично работает на потоках, которые получают блокировку).
Важное РЕДАКТИРОВАНИЕ: СManualResetEvent.WaitOne
вместоAcceptSocket
, как предложил Лирик для тестирования, работает отлично. Как так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();