开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 6531|回复: 5

[源码] 【源码示例】C#共享内存(vs2010)

[复制链接]

0

精华

5107

贡献

5351

赞扬

管理员

帖子
1155
软币
21111
在线时间
4332 小时
注册时间
2013-6-7

黄马甲

发表于 2014-2-10 10:14:57 | 显示全部楼层 |阅读模式
20140210101015.jpg


VS2010 C# ShareMemory
源码是CSDN上的,原版是日语的,我小翻译了一下并将方案升级到了VS2010

在之前版本中,新增了清空内存方法
网上有C#共享内存类,不过功能太简单了,并且写内存每次都从开头写。故对此进行了改进,并做了个小例子,供需要的人参考。

主要改进点:
通过利用共享内存的一部分空间(以下称为“数据信息区”)来存储当前内存中存储的数据信息(count和length或者添加其他信息),完成了对内存读写功能的完善。
在读写内存时,读写数据信息区。

1.写共享内存
根据共享内存当前的使用length,依次往后写。

2.读共享内存
读取从共享内存的起始位置(不包括数据信息区)至length的所有数据。

3.关键点
把IntPtr型的m_pwData当指针来操作,实现从内存的任意位置读写数据。
m_pwDataWrite = (IntPtr)(m_pwData.GetHashCode() + m_length + infoSize);

4.可改进处
在数据信息区,添加每条数据的length信息,即可实现自由读取数据,而不必每次都起始读。


ShareMemory.rar (56.89 KB, 下载次数: 164)

评分

参与人数 10赞扬 +10 收起 理由
seamone + 1 感谢分享
ssa521 + 1 感谢分享
guqiu + 1 很给力
nyfor + 1 感谢分享
dsir + 1 Thanks

查看全部评分

回复

使用道具 举报

0

精华

5

贡献

17

赞扬

帖子
15
软币
204
在线时间
8 小时
注册时间
2013-6-15
发表于 2014-3-3 10:42:53 | 显示全部楼层
这个好东东,非常感谢楼主,我原本是用Marshal类提供的方法实现共享字节缓存块的
回复

使用道具 举报

0

精华

0

贡献

42

赞扬

帖子
59
软币
375
在线时间
22 小时
注册时间
2014-1-21
发表于 2014-3-4 09:27:13 | 显示全部楼层
非常感谢 学习学习
回复

使用道具 举报

0

精华

0

贡献

0

赞扬

帖子
62
软币
1202
在线时间
130 小时
注册时间
2013-12-9
发表于 2014-12-20 11:24:14 | 显示全部楼层
这个好东东,非常感谢楼主
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-5-13 20:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表