“已超过最大服务器实例数”是什么意思?

时间:2019-02-07 08:05:30

标签: c# .net pipe named-pipes namedpipeserverstream

System.IO.Pipes.NamedPipeServerStream类引发IOException,并且文档显示已超过服务器实例的最大数量。对我来说,此消息不是很清楚。有人可以用我能理解的方式解释它吗?这是否意味着同一代码正在由两个不同的进程或类似的东西执行?如果这种情况很少发生,该如何避免?

我正在使用以下构造函数:

int maxNumberServerInstance = 1;
new NamedPipeServerStream(name, PipeDirection.InOut, maxNumberServerInstance , PipeTransmissionMode.Message, PipeOptions.None, bufferSize, bufferSize, pipeSecurity);

我得到IOException。

1 个答案:

答案 0 :(得分:0)

让我们访问文档。

NamedPipeServerStream Class

  

例外

     

IOException已超过服务器实例的最大数量。

NamedPipeServerStream.MaxAllowedServerInstances Field

  

表示系统中服务器实例的最大数量   资源允许。

     

备注

     

在创建虚拟机时使用MaxAllowedServerInstances   NamedPipeServerStream对象设置服务器的最大数量   系统资源允许的实例。

简而言之,该错误告诉您已创建了最大数量的实例。

如果仅使用名称的默认构造函数,则将获得此消息,此外,还将获得具有以下特征的管道:

  
      
  • InOut的默认管道方向。

  •   
  • 共享相同名称的服务器实例的最大数量设置为1。

  •   
  • PipeTransmissionMode字节的值。

  •   
  • PipeOptions值为“无”。

  •   
  • 默认输入和输出缓冲区大小。

  •   
  • 没有管道安全性。

  •   
  • HandleInheritability值为None。

  •   
  • 没有指定其他的PipeAccessRights。

  •   

如果需要多个实例,至少要使用以下构造函数:

NamedPipeServerStream(String, PipeDirection, Int32)

  

参数

     
      
  • pipeName String

         
        
    • 管道的名称。
    •   
  •   
  • 方向PipeDirection

         
        
    • 确定管道方向的枚举值之一。
    •   
  •   
  • maxNumberOfServerInstances Int32

         
        
    • 共享相同名称的服务器实例的最大数量。您可以为此值传递MaxAllowedServerInstances。
    •   
  •   

最后,如果遇到此错误,并且只有一个实例,那么创建它们的方式可能会有一个细微的问题。