Thread.Abort no parece lanzar una ThreadAbortException debido a AcceptSocket
Estoy llamandoChannelServer.ListeningThread.Abort
en el siguiente hilo, sin embargo, nada parece suceder. Me gustaría ser más específico, pero no puedo pensar en nada más. Parece que no hayThreadAbortException
que se lanza, y esta excepción se debe lanzar independientemente del oyente de bloqueo (funciona perfectamente en subprocesos que reciben de forma bloqueada).
EDICIÓN importante: Con unManualResetEvent.WaitOne
en lugar deAcceptSocket
, como Lyrik ha sugerido para las pruebas, funciona perfectamente. CómoAcceptSocket
bloquea elThreadAbortException
?
ENLAZAR: Este hilo del foro parece discutir el mismo problema, aunque no puedo resolver 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();