Thread.Abort não parece lançar um ThreadAbortException por causa de AcceptSocket
eu estou chamandoChannelServer.ListeningThread.Abort
no segmento a seguir, no entanto, nada parece acontecer. Gostaria de ser mais específico, mas não consigo pensar em mais nada. Parece não haverThreadAbortException
que é lançada, e essa exceção deve ser lançada independentemente do ouvinte de bloqueio (funciona perfeitamente em threads que estão recebendo bloqueios).
Edição importante: Com umManualResetEvent.WaitOne
ao invés deAcceptSocket
, como sugeriu Lyrik para os testes, ele funciona perfeitamente. Por quêAcceptSocket
bloqueia oThreadAbortException
?
LIGAÇÃO: Este tópico do fórum parece discutir o mesmo problema, embora eu não consiga entender nada: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();