管道之间通信主要用到C#中两个类分别为NamedPipeClientStream和NamedPipeServerStream类

private void SendMessage_Click(object sender, RoutedEventArgs e){using (NamedPipeClientStream namedPipeClient = new NamedPipeClientStream("Server-pipe")){namedPipeClient.Connect(3000);var message = "How are you";byte[] outMessageByte = UTF8Encoding.UTF8.GetBytes(message);namedPipeClient.Write(outMessageByte, 0, outMessageByte.Length);byte[] inMessageByte = new byte[2048];namedPipeClient.Read(inMessageByte, 0, 2048);var inMessage = UTF8Encoding.UTF8.GetString(inMessageByte).TrimEnd('\0');txtMesage.Text=inMessage;}}
using (NamedPipeServerStream namedPipeServer = new NamedPipeServerStream("Server-pipe", PipeDirection.InOut, 4, PipeTransmissionMode.Message)){while (true){if (!namedPipeServer.IsConnected){namedPipeServer.WaitForConnection();}byte[] inMessageByte = new byte[2048];namedPipeServer.Read(inMessageByte, 0, 2048);string message = UTF8Encoding.UTF8.GetString(inMessageByte);string result = "I'm fine ,thank you";try{Console.WriteLine(message);}catch (Exception ex){Console.WriteLine(ex.Message);}if (result != string.Empty){byte[] payResult = UTF8Encoding.UTF8.GetBytes(result);namedPipeServer.Write(payResult, 0, payResult.Length);}namedPipeServer.Disconnect();}}

这节我们主要介绍C#中如何在不同进程之间进行通信,希望对各位有帮助。