以下是使用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必须在同一台计算机上运行,否则它们将无法访问共享内存

用c#写一个demo使用MemoryMappedFile和MemoryMappedViewAccessor在一个进程写IntPtr另一个进程读IntPtr的数据

原文地址: https://www.cveoy.top/t/topic/dhHK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录