首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C#共享内存两个进程软件互相读写实现类

C#共享内存两个进程软件互相读写实现类

作者头像
git clone firc-dataset
发布2025-07-18 12:45:09
发布2025-07-18 12:45:09
4330
举报

我在网上找了很多源码,没有一个可以用2个程序实现互相读写的共享内存功能,一般只能单向传递,没有任何意义,于是我自己封装了一个类,但是看起来没任何问题,就是不能共享,现在我把代码贴出来,请大神帮忙看看 using System; using System.IO; using System.IO.MemoryMappedFiles; using System.Runtime.InteropServices; using System.Threading; namespace Demo {     public class ShareMemory     {         private MemoryMappedFile mmf;         public string MapName = "future";         public int MaxSize = 10 * 1024 * 1024;         private int m_nState = 0;         private int nDataLen = 0;         public ShareMemory()         {         }         public void Create()         {             mmf = MemoryMappedFile.CreateOrOpen(MapName, MaxSize, MemoryMappedFileAccess.ReadWrite);         }         public void Open()         {             mmf = MemoryMappedFile.OpenExisting(MapName);         }         /// <summary>         /// 析构函数         /// </summary>         ~ShareMemory()         {             mmf.Dispose();         }         ///读数据         public void Read(ref byte[] Data)         {             m_nState = 2;             using (var stream = mmf.CreateViewStream(0, nDataLen)) //创建文件内存视图流 基于流的操作             {                 var reader = new BinaryReader(stream);                 reader.Read(Data, 0,nDataLen);             }             m_nState = 0;         }         public void Clear()         {             m_nState = 3;             using (var stream = mmf.CreateViewStream(0,MaxSize)) //创建文件内存视图流 基于流的操作             {                 var writer = new BinaryWriter(stream);                 byte[] Data=new byte[MaxSize];                 writer.Write(Data, 0, MaxSize);                 nDataLen = 0;             }             m_nState = 0;         }         //将数据写入共享内存中         public void Write(byte[] Data)         {             m_nState = 1;             using (var stream = mmf.CreateViewStream(0,Data.Length)) //创建文件内存视图流 基于流的操作             {                 var writer = new BinaryWriter(stream);                 writer.Write(Data,0,Data.Length);                 nDataLen = Data.Length;             }             m_nState = 0;         }         public int GetDataLenth()         {             return nDataLen;         }         /// <summary>         /// 0空闲,1写,2读,3清除中         /// </summary>         /// <returns></returns>         public int GetState()         {             return m_nState;         }     } }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档