System.IO.Pipes.NamedPipeServerStream类引发IOException,并且文档显示已超过服务器实例的最大数量。对我来说,此消息不是很清楚。有人可以用我能理解的方式解释它吗?这是否意味着同一代码正在由两个不同的进程或类似的东西执行?如果这种情况很少发生,该如何避免?
我正在使用以下构造函数:
int maxNumberServerInstance = 1;
new NamedPipeServerStream(name, PipeDirection.InOut, maxNumberServerInstance , PipeTransmissionMode.Message, PipeOptions.None, bufferSize, bufferSize, pipeSecurity);
我得到IOException。
答案 0 :(得分:0)
让我们访问文档。
例外
IOException
已超过服务器实例的最大数量。
NamedPipeServerStream.MaxAllowedServerInstances Field
表示系统中服务器实例的最大数量 资源允许。
备注
在创建虚拟机时使用MaxAllowedServerInstances NamedPipeServerStream对象设置服务器的最大数量 系统资源允许的实例。
简而言之,该错误告诉您已创建了最大数量的实例。
如果仅使用名称的默认构造函数,则将获得此消息,此外,还将获得具有以下特征的管道:
InOut的默认管道方向。
共享相同名称的服务器实例的最大数量设置为1。
PipeTransmissionMode字节的值。
PipeOptions值为“无”。
默认输入和输出缓冲区大小。
没有管道安全性。
HandleInheritability值为None。
没有指定其他的PipeAccessRights。
如果需要多个实例,至少要使用以下构造函数:
NamedPipeServerStream(String, PipeDirection, Int32)
参数
pipeName
String
- 管道的名称。
方向
PipeDirection
- 确定管道方向的枚举值之一。
maxNumberOfServerInstances
Int32
- 共享相同名称的服务器实例的最大数量。您可以为此值传递MaxAllowedServerInstances。
最后,如果遇到此错误,并且只有一个实例,那么创建它们的方式可能会有一个细微的问题。