当前的问题是要使“容器”应用程序和“子”应用程序通过命名管道进行通信。问题是,有时无法创建管道。
事情进展顺利时,沟通就很好。
我看到的问题是有时Pipe服务器将无法初始化。我可以看到为什么在某些情况下会发生这种情况,即我的应用程序的先前版本仍在后台运行,并且由于某种原因未正确退出,因此它一直挂在管道上。但是我也看到了失败,因为我为管道输入了新的随机名称,该名称不应被其他任何进程使用,这是让我担心的部分。也许这是操作系统在同一进程名称上设置的限制,还是在Visual Studio调试模式下设置的限制?
为了说明这一点,我有一些代码尝试创建服务器流(管道服务器):
NamedPipeServerStream server = new NamedPipeServerStream(pipeName, PipeDirection.InOut, 1);
我经常看到的异常是:
无法创建server:System.IO.IOException:所有管道实例均处于繁忙状态。
我尝试了一些变体,将安全选项传递给管道+将允许的服务器数量从1增加到更高,但是“孩子” /客户端可能会连接到我认为是另一个进程的进程正确关闭,因此管道服务器错误。
我的想法是:
由于很难重新创建,因此我通过执行以下操作来模拟问题:
var pipeName =“ myApp22”;
NamedPipeServerStream server = new NamedPipeServerStream(pipeName, PipeDirection.InOut, 1);
//在这里,我想捕获异常,然后强制关闭,然后重复此操作:
NamedPipeServerStream server = new NamedPipeServerStream(pipeName, PipeDirection.InOut, 1);
任何输入将不胜感激。谢谢。