http://msdn.microsoft.com/en-us/library/windows/desktop/aa365588(v=vs.85).aspxにある MSDN サンプルに似た名前付きパイプ サーバーがあり、クライアントが送信できるようにしたいと考えています。サーバーを正常に停止させる「終了」メッセージ。
そこで「InstanceThread()」では、特殊なメッセージを受信したらサーバーを停止させたいと考えています。
「InstanceThread()」のセパレートスレッドからメインスレッドのConnectNamedPipe()の呼び出しをパイプハンドルを閉じることで止めようとしたのですが、うまくいきません。
パイプ全体を閉じる、InstanceThread から直接終了するなど、さまざまなことを既に試しましたが、いずれも ConnectNamedPipe() の呼び出しを停止させません。
私は SetNamedPipeHandleState() で遊んでいましたが、実装が非常に複雑になりました。また、重複した I/O を使用することは、この単純な要件に対してやり過ぎのようです。
サーバープロセスを停止し、クライアント接続を際限なく待機する必要があるときに ConnectNamedPipe() を返す簡単な方法はありますか?