Как сделать запись без ожидания на именованном канале (c #)? - PullRequest
0 голосов
/ 10 июня 2010

Я использую именованные каналы .net 3.5, и моя сторона сервера:

serverPipeStream = new NamedPipeServerStream("myPipe", PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);

Когда я записываю некоторые данные, скажем, с BinaryWriter, сам вызов write () не возвращается, пока клиентская сторона не вызовет read () для своего NamedPipeClientStream.

BinaryWriter:

writer = new BinaryWriter(serverPipeStream);

Мне известно, что NamedPipeServerStream предлагает BeginRead / BeginWrite, но из того, что я собираю, именованные каналы должны позволять потоковым программам работать над ними (как видно во многих приведенных Microsoft примерах).

Итак, как я могу сделать запись () в именованный канал без ожидания?

Заранее спасибо за любую помощь.

1 Ответ

2 голосов
/ 10 июня 2010

Проблема в том, что BinaryWriter не имеет функции BeginWrite, поэтому, как предлагается здесь , вы можете записать в MemoryStream и затем использовать его буфер для передачи вBeginWrite функция трубы.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...