5

如何监控命名管道?FileSystemWatcher无法监控\\\\.\pipes。有没有类似于 FSW 的东西可以用于命名管道?目前我轮询任何新的命名管道创建,但这似乎有点无效。

我想监视我感兴趣的管道的创建。当管道已经创建时,命名管道的列表很好。我将弹出几个程序实例,每次弹出时,我都希望能够使用命名管道自动连接它而无需轮询。似乎没有这样的机制可用。

4

1 回答 1

2

您不能观察命名管道本身,但您可以等待其他事情。我对此的解决方案是创建一个事件,然后等待。当服务器程序创建它的管道时,它也会发出事件信号。当客户端收到信号时,关闭事件并打开管道。

当您收到管道已关闭的指示并且您需要再次注意它时,重新打开事件并等待。

如果您有多个管道,您可能希望为每个管道 ( EventForPipe-*pipename*) 设置一个单独的事件,或者您可能希望拥有一个用于所有管道的事件,并在事件发出信号时简单地检查每个管道。

这将适用于本地管道,但不适用于远程管道,因为无法发出信号或等待远程事件。如果您必须监视另一台计算机上的管道,则拥有该管道的计算机也可以有一个共享目录,可用于发送信号。由于可以监视共享目录的文件更改,因此您可以在创建管道时创建文件。请注意,您仍然需要定期轮询(可能每分钟一次)才能使此策略起作用,因为远程服务器可能无法满足所有远程文件通知请求。

于 2013-01-19T01:16:26.210 回答