在C#中监视命名管道

Mur*_*lex 5 c#

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

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

Gab*_*abe 2

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

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

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

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