Что означает «Превышено максимальное количество экземпляров сервера»? - PullRequest
0 голосов
/ 07 февраля 2019

Класс System.IO.Pipes.NamedPipeServerStream создает исключение IOException, а в документации указывается Превышено максимальное количество экземпляров сервера. Это сообщение мне не совсем понятно.Может кто-то объяснить это с точки зрения я могу понять?Означает ли это, что один и тот же код выполняется двумя разными процессами или что-то в этом роде?Как я могу избежать этого, если это случается редко?

Я использую следующий конструктор:

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

Я получаю IOException.

1 Ответ

0 голосов
/ 07 февраля 2019

Давайте посетим документацию.

NamedPipeServerStream Class

Исключения

IOException Превышено максимальное количество экземпляров сервера.

NamedPipeServerStream.MaxAllowedServerInstances Поле

Представляет максимальное количество экземпляров сервера, которое позволяют системные ресурсы.

Замечания

Используйте MaxAllowedServerInstances при создании объекта NamedPipeServerStream, чтобы установить максимальное количество экземпляров сервера, которое позволяют системные ресурсы.

Короче говоря, ошибка говорит вам, что максимальноеколичество экземпляров было создано.

Вы получите это, если использовали конструктор по умолчанию только с именем, дополнительно вы получите трубу со следующими характеристиками:

  • Направление канала по умолчанию для InOut.

  • Максимальное количество экземпляров сервера с одинаковым именем, установленное на 1.

  • Значение PipeTransmissionMode в байтах.

  • Значение PipeOptions отсутствует.

  • Вход по умолчанию иРазмеры выходного буфера.

  • Без защиты канала.

  • Значение HandleInheritability Нет.

  • Не указано никаких дополнительных PipeAccessRights.

Как минимум вы захотите использовать следующий конструктор, если вам нужно более одного экземпляра:

NamedPipeServerStream (String, PipeDirection, Int32)

Параметры

  • pipeName String

    • название трубы.
  • направление PipeDirection

    • Одно из значений перечисления, определяющее направление трубы.
  • maxNumberOfServerInstances Int32

    • Максимальное количество экземпляров сервера с одинаковыми именами.Вы можете передать MaxAllowedServerInstances для этого значения.

Наконец, если вы получаете эту ошибку, и у вас есть только один экземпляр, у вас, вероятно, есть небольшая проблема с тем, как высоздаем их.

...