変数を待つのではなく、イベントを待つことをお勧めします。現在のスキームでは、リスナー変数がtrueであるかどうかのループテストが行われるケースを考慮してください。それがループに入り、着信接続を待ってブロックします。したがって、別のスレッドがリスナー変数をfalseに設定したとしても、誰かが接続してその接続を処理するまでループは終了しません。それは上記の接続要求に応じていない上記のループに影響を与えない送信
WaitHandle[] waitHandles = new WaitHandle[] {endlLoopEvent};
while(true)
{
int ret = WaitHandle.WaitAny(waitHandles, 100);
if(WaitTimeout == ret) continue;
else if(0 == ret) break; //our event has been signaled.
else
{
if(!server.Pending()) continue; //Go back to the loop if no connection pending
TcpClient client = server.AcceptTcpClient();
// You can spawn a thread to service the request.
}
}
、提供:問題を回避作業の
一つの方法は、上記のコードのように持つことになります。