c#两个exe之间使用共享内存通信
时间: 2024-01-16 10:02:56 浏览: 112
C#使用共享内存实现进程间的通信
5星 · 资源好评率100%
在 C# 中,可以使用 System.IO.MemoryMappedFiles 命名空间来实现两个应用程序之间的共享内存通信。以下是一个基本的示例:
创建一个写入程序,将数据写入共享内存中:
```csharp
using System.IO.MemoryMappedFiles;
using System.Text;
class Program
{
static void Main(string[] args)
{
using (var mmf = MemoryMappedFile.CreateNew("MyMemoryMap", 1024))
{
var data = Encoding.UTF8.GetBytes("Hello, world!");
using (var accessor = mmf.CreateViewAccessor())
{
accessor.WriteArray(0, data, 0, data.Length);
}
}
}
}
```
创建一个读取程序,从共享内存中读取数据:
```csharp
using System.IO.MemoryMappedFiles;
using System.Text;
class Program
{
static void Main(string[] args)
{
using (var mmf = MemoryMappedFile.OpenExisting("MyMemoryMap"))
{
using (var accessor = mmf.CreateViewAccessor())
{
byte[] data = new byte[1024];
accessor.ReadArray(0, data, 0, data.Length);
string message = Encoding.UTF8.GetString(data);
Console.WriteLine(message);
}
}
}
}
```
注意:在使用共享内存通信时,需要确保两个进程都使用相同的内存映射名称,才能正确地访问相同的共享内存。
阅读全文