NamedPipeServerStream and WaitForConnection method
本文关键字:method WaitForConnection and NamedPipeServerStream | 更新日期: 2023-09-27 18:11:58
当使用类NamedPipeServerStream
时,让我感到困扰的是,对于每个传入的连接,我需要创建新对象并调用它的方法WaitForConnection
。
我想做的是创建一个NamedPipeServerStream
对象,然后在while循环中反复调用上述方法,如下所示:
NamedPipeServerStream s2;
using (s2 = new NamedPipeServerStream("pipe_name", PipeDirection.InOut)) {
while(true) {
ss2.WaitForConnection();
//do something here
}
}
但是当我这样做的时候,我得到消息
流已断开连接。
任何建议吗?
如果你想使用NamedPipeServerStream,你需要使用它给你的编程模型,这是因为它正在包装一个底层的Windows句柄到一个命名管道内核对象。你不能像你想的那样使用它,因为这不是命名管道句柄的工作方式。
如果你真的想在一个线程中一次处理一个连接,把你的循环从里面翻出来:
while (true)
{
using (NamedPipeServerStream ss2 = new NamedPipeServerStream("pipe_name", PipeDirection.InOut)
{
ss2.WaitForConnection();
// Stuff here
}
}
更可能的情况是,您需要一个多线程管道服务器来并行处理连接。如果是这样,有多种方法——搜索其他so问题会出现几种模式,例如这里或这里。