Fro*_*art 7 c# named-pipes interprocess
我需要在C#应用程序之间实现进程间通信.我决定使用命名管道并编写以下代码:
服务器
while (true)
{
using (var server = new NamedPipeServerStream("some_pipe"))
{
server.WaitForConnection();
using (var reader = new StreamReader(server))
{
string line = reader.ReadLine();
MessageBox.Show(line);
}
}
}
Run Code Online (Sandbox Code Playgroud)
客户
using (var client = new NamedPipeClientStream("some_pipe"))
{
client.Connect();
using (var writer = new StreamWriter(client))
{
writer.AutoFlush = true;
writer.WriteLine(path);
client.WaitForPipeDrain();
}
}
Run Code Online (Sandbox Code Playgroud)
我有以下问题:
NamedPipeServerStream每次都真正创建另一个类实例吗?如果我从while (true)循环移动它的结构,它给我一个例外"无法访问一个封闭的管道".我怎么能避免呢?如果我无法避免它并且每次都应该重新创建这个对象,那么NamedPipeServerStream当客户端尝试连接它时会发生什么?这是行不通的。多个客户端仅连接到一个 NamedPipeServerStream 是一项不可用的功能。它带有“...ServerStream”的名称具有误导性。管道是 1 对 1 连接。您必须有多个服务器实例为多个客户端提供相同的管道服务。这个代码项目展示了如何实现一个服务器管道并且可以帮助你。
| 归档时间: |
|
| 查看次数: |
9461 次 |
| 最近记录: |