在C#中,多进程通信可以使用.NET提供的System.IO.Pipes
命名空间下的类来实现
ProcessA
。Program.cs
文件中,添加以下代码:using System;
using System.IO.Pipes;
using System.Threading.Tasks;
namespace ProcessA
{
class Program
{
static async Task Main(string[] args)
{
using var server = new NamedPipeServerStream("MyEventPipe");
Console.WriteLine("Waiting for client connection...");
await server.WaitForConnectionAsync();
Console.WriteLine("Client connected.");
byte[] buffer = new byte[1];
int bytesRead = await server.ReadAsync(buffer, 0, 1);
if (bytesRead > 0 && buffer[0] == 1)
{
Console.WriteLine("Event received.");
}
}
}
}
ProcessB
。Program.cs
文件中,添加以下代码:using System;
using System.IO.Pipes;
using System.Threading.Tasks;
namespace ProcessB
{
class Program
{
static async Task Main(string[] args)
{
using var client = new NamedPipeClientStream(".", "MyEventPipe", PipeDirection.Out);
Console.WriteLine("Connecting to server...");
await client.ConnectAsync();
Console.WriteLine("Connected to server.");
byte[] buffer = new byte[] { 1 };
await client.WriteAsync(buffer, 0, 1);
Console.WriteLine("Event sent.");
}
}
}
ProcessA
和ProcessB
项目。你会看到ProcessA
等待客户端连接,然后ProcessB
连接到服务器并发送事件通知。ProcessA
接收到事件通知后,输出"Event received."。这个示例展示了如何在两个不同的进程之间使用命名管道进行事件通知。当然,这只是一个简单的示例,实际应用中可能需要更复杂的通信协议和数据结构。但这个示例为你提供了一个基本的框架,可以根据你的需求进行扩展。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。