我遇到以下问题。我正在尝试将NamedPipe
用于以下组件:
一个Winservice,在每个Winforms
处产生一个SessionChange
应用程序
Winforms应用程序
因此,当有人登录时,我的Session 0
进程会产生一个新的Winforms
,打开一个管道,并开始交换消息。
每次有人登录时,我是否需要在NamedPipeServerStream
侧创建Winservice
的新实例?我知道您可以在NamedPipeServerStream
重载时指定连接数,但这对我没有帮助,因为这将是一个长期运行的过程。
var server = new NamedPipeServerStream(
"somePipe",
PipeDirection.InOut,
1, PipeTransmissionMode.Message
);
await server.WaitForConnectionAsync();
从我看到的是,我必须实现类似PipePool
的功能,当客户端(Winforms
)断开连接时,我将收集管道并重新初始化它。
我错了吗,管道对象可以重用吗?
PS 为简单起见,我仅考虑仅打开一个会话的情况。