名前付きパイプ自体を監視することはできませんが、他のことを待つことはできます。これに対する私の解決策は、イベントを作成してからそれを待つことです。サーバー プログラムがパイプを作成すると、イベントも通知されます。クライアントがシグナルを受け取ったら、イベントを閉じてパイプを開きます。
パイプが閉じられたことを示すメッセージが表示され、再度監視する必要がある場合は、イベントを再度開いて待機します。
複数のパイプがある場合は、パイプごとに個別のイベントが必要になる場合があります ( EventForPipe-*pipename*
)。または、すべてのパイプに使用される 1 つのイベントが必要な場合があり、イベントが通知されたときに各パイプをチェックするだけです。
これはローカル パイプでは機能しますが、リモート イベントを通知または待機する方法がないため、リモート パイプでは機能しません。別のコンピューターでパイプを監視する必要がある場合は、パイプを使用するコンピューターに、シグナリングに使用できる共有ディレクトリを含めることもできます。共有ディレクトリはファイルの変更を監視できるため、パイプの作成時にファイルを作成できます。リモート サーバーはすべてのリモート ファイル通知要求を受け入れることができない可能性があるため、この戦略が機能するには定期的に (おそらく 1 分に 1 回) ポーリングする必要があることに注意してください。