如何在命名管道(c#)上进行非等待写入?

时间:2010-06-10 15:16:27

标签: c# named-pipes nonblocking client-server

我正在使用.net 3.5命名管道,我的服务器端是:

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

当我用BinaryWriter写一些数据时,write()调用本身不会返回,直到客户端在其NamedPipeClientStream上调用了read()。

BinaryWriter是:

writer = new BinaryWriter(serverPipeStream);

我知道NamedPipeServerStream提供了一个BeginRead / BeginWrite但是从我收集的内容来看,命名管道应该允许streamwriters在它们之上执行(如许多微软给出的例子所示)。

那么如何让我的write()到命名管道不等待?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

问题是BinaryWriter没有BeginWrite函数,因此,如建议here,您可以写入MemoryStream,然后使用其缓冲区传递给{{} 1}}管道的功能。

希望有所帮助。