在C#中,可以使用不同的技術來實現跨進程通信。以下是一些常見的跨進程通信技術和示例:
1. 命名管道(Named Pipes):
```csharpusing (var pipeServer = new NamedPipeServerStream("myPipe")){ pipeServer.WaitForConnection();
using (var sw = new StreamWriter(pipeServer)) { sw.WriteLine("Hello from Process 1!"); }}
using (var pipeClient = new NamedPipeClientStream(".", "myPipe")){ pipeClient.Connect();
using (var sr = new StreamReader(pipeClient)) {string message = sr.ReadLine(); Console.WriteLine("Received message: " + message); }}```
2. Windows套接字(Windows Sockets):
```csharpusing (var serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)){ serverSocket.Bind(new IPEndPoint(IPAddress.Any, 1234)); serverSocket.Listen(1);
using (var clientSocket = serverSocket.Accept()) {byte[] buffer = Encoding.UTF8.GetBytes("Hello from Process 1!"); clientSocket.Send(buffer); }}
using (var clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)){ clientSocket.Connect("127.0.0.1", 1234);
byte[] buffer = newbyte[1024];int bytesRead = clientSocket.Receive(buffer);string message = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine("Received message: " + message);}```
3. Windows消息(Windows Messages):
```csharp[DllImport("user32.dll", CharSet = CharSet.Auto)]privatestaticexternintSendMessage(IntPtr hWnd, int Msg, int wParam, string lParam);
constint WM_COPYDATA = 0x004A;constint PROCESS2_ID = 12345;
string message = "Hello from Process 1!";SendMessage(Process.GetProcessById(PROCESS2_ID).MainWindowHandle, WM_COPYDATA, 0, message);
protectedoverridevoidWndProc(ref Message m){constint WM_COPYDATA = 0x004A;
if (m.Msg == WM_COPYDATA) { COPYDATASTRUCT copyData = (COPYDATASTRUCT)m.GetLParam(typeof(COPYDATASTRUCT));string message = Marshal.PtrToStringUni(copyData.lpData); Console.WriteLine("Received message: " + message); }
base.WndProc(ref m);}```
這些示例分別使用命名管道、Windows套接字和Windows消息來實現跨進程通信。你可以根據你的具體需求選擇適合的方法來實現跨進程通信
如果你覺得這篇文章對你有幫助,不妨點個贊支持一下!你的支持是我繼續分享知識的動力。如果有任何疑問或需要進一步的幫助,歡迎隨時留言。也可以加入微信公眾號[DotNet技術匠] 社區,與其他熱愛技術的同行一起交流心得,共同成長!作者:小碼編匠
出處:gitee.com/smallcore/DotNetCore聲明:網絡內容,僅供學習,尊重版權,侵權速刪,歉意致謝!
該文章在 2026/3/9 11:44:53 編輯過