1、创建一个管道池,保持内部有一个待链接的管道实例2、客户端去链接,系统会自动分配给客户端一个等待链接的服务端实例3、当服务端链接后,再创建一个新的待链接的管道实例4、当客户端断开链接或者超时,那么将自动销毁服务端实例保持管道池中至少有1个待链接的实例,但是不能超过上限数量。
pipeServer.BeginWaitForConnection((o) =>
{
NamedPipeServerStream server = (NamedPipeServerStream)o.AsyncState;
server.EndWaitForConnection(o);
work();
StreamReader sr = new StreamReader(server);
StreamWriter sw = new StreamWriter(server);
sw.AutoFlush = true;
string clientName = server.GetImpersonationUserName();
string result = sr.ReadLine();
while (result != null)
{
sw.WriteLine("ok");
this.Invoke((MethodInvoker)delegate { richTextBox1.Text = "收到 " clientName " : " result "\r\n";});
result = sr.ReadLine();
}
server.Close();
}, pipeServer);
评论