次のスレッドを呼び出しChannelServer.ListeningThread.Abort
ていますが、何も起こらないようです。もっと具体的に言いたいのですが、これ以上何も考えられません。スローされるものはないようThreadAbortException
です。この例外は、ブロッキングリスナーに関係なくスローする必要があります(ブロッキング受信しているスレッドで完全に機能します)。
重要な編集:Lyrikがテストのために提案したように、の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();