用c#写一个demo使用MemoryMappedFile和MemoryMappedViewAccessor在一个进程写IntPtr另一个进程读IntPtr的数据
以下是使用MemoryMappedFile和MemoryMappedViewAccessor在一个进程写IntPtr,另一个进程读IntPtr的C#代码示例:
进程1:
using System;
using System.IO.MemoryMappedFiles;
using System.Runtime.InteropServices;
class Program
{
static void Main(string[] args)
{
using (var mmf = MemoryMappedFile.CreateNew("test", Marshal.SizeOf<IntPtr>()))
{
using (var accessor = mmf.CreateViewAccessor())
{
IntPtr data = new IntPtr(12345);
accessor.Write(0, ref data);
Console.WriteLine("数据已写入共享内存");
}
Console.ReadLine();
}
}
}
进程2:
using System;
using System.IO.MemoryMappedFiles;
using System.Runtime.InteropServices;
class Program
{
static void Main(string[] args)
{
using (var mmf = MemoryMappedFile.OpenExisting("test"))
{
using (var accessor = mmf.CreateViewAccessor())
{
IntPtr data;
accessor.Read(0, out data);
Console.WriteLine("读取到的数据为:" + data);
}
Console.ReadLine();
}
}
}
在进程1中,我们创建了一个名为“test”的MemoryMappedFile,它的大小为一个IntPtr的大小。然后,我们创建了一个MemoryMappedViewAccessor实例,使用它来写入IntPtr数据。
在进程2中,我们打开了名为“test”的MemoryMappedFile,然后使用MemoryMappedViewAccessor实例来读取IntPtr数据。最后,我们将读取到的数据打印到控制台上。
注意,进程1和进程2必须在同一台计算机上运行,否则它们将无法访问共享内存
原文地址: https://www.cveoy.top/t/topic/dhHK 著作权归作者所有。请勿转载和采集!