• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#共享内存整理

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.System.IO.MemoryMappedFiles 内存映射文件

内存映射文件还可以在多个进程之间进行共享。

未映射映射文件时,更改都将自动传播到磁盘。

CreateNew 方法创建一个未映射到磁盘上的现有文件的内存映射文件;而且这些方法还适合创建用于进程间通信 (IPC) 的共享内存。

内存映射文件与名称相关联。

对同一文件创建两个文件映射的两个视图不具有并发性。(https://msdn.microsoft.com/zh-cn/library/system.io.memorymappedfiles.memorymappedfile(v=vs.100).aspx)

常用函数:

[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public static MemoryMappedFile CreateOrOpen(
    string mapName, //要分配给内存映射文件的名称。
    long capacity,//要分配给内存映射文件的最大大小(以字节为单位)。
    MemoryMappedFileAccess access,//ReadWrite。 
    MemoryMappedFileOptions options,//枚举值的按位组合,用于为内存映射文件指定内存分配选项。
    MemoryMappedFileSecurity memoryMappedFileSecurity,//此参数可以为 null。
    HandleInheritability inheritability//None。 
)
viewAccessor.WriteArray<char>(4, input.ToArray(), 0, input.Length);
}
public static MemoryMappedFile CreateNew(
    string mapName, //要分配给内存映射文件的名称。
    long capacity   //要分配给内存映射文件的最大大小(以字节为单位)。
)
使用此方法创建一个不持久保留的内存映射文件(即,不与磁盘上的文件关联),您可以使用该文件在进程之间共享数据。
 static void Main(string[] args)
 {
     using (MemoryMappedFile mmf = MemoryMappedFile.CreateNew("testmap", 10000))
     {
         bool mutexCreated;
         Mutex mutex = new Mutex(true, "testmapmutex", out mutexCreated);
         using (MemoryMappedViewStream stream = mmf.CreateViewStream())
         {
             BinaryWriter writer = new BinaryWriter(stream);
             writer.Write(1);
         }
         mutex.ReleaseMutex();
         mutex.WaitOne();
         using (MemoryMappedViewStream stream = mmf.CreateViewStream())
         {
             BinaryReader reader = new BinaryReader(stream);
             Console.WriteLine("Process A says: {0}", reader.ReadBoolean());
             Console.WriteLine("Process B says: {0}", reader.ReadBoolean());
             Console.WriteLine("Process C says: {0}", reader.ReadBoolean());
         }
         mutex.ReleaseMutex();
     }
 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
在WinForm中通过C#调用CHM帮助文件发布时间:2022-07-13
下一篇:
C#中,如何隐藏TextBox中闪烁的光标?发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap