Thread.Abort scheint wegen AcceptSocket @ keine ThreadAbortException auszulös
Ich rufe anChannelServer.ListeningThread.Abort
Auf dem folgenden Thread scheint jedoch nichts zu passieren. Ich möchte genauer sein, aber mir fällt nichts mehr ein. Es scheint kein @ zu gebThreadAbortException
, das ausgelöst wird, und diese Ausnahme sollte unabhängig vom blockierenden Listener ausgelöst werden (dies funktioniert perfekt bei Threads, die blockierend empfangen).
Important EDIT: Mit einerManualResetEvent.WaitOne
Anstatt vonAcceptSocket
, wie Lyrik zum Testen vorgeschlagen hat, funktioniert es perfekt. WoherAcceptSocket
blockiert dasThreadAbortException
?
VERKNÜPFUN: Dieser Forenthread scheint dasselbe Problem zu behandeln, obwohl ich nichts daraus herausfinden kann: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();