hBifTs

山自高兮水自深!當塵霧消散,唯事實留傳.荣辱不惊, 看庭前花开花落; 去留随意, 望天上云展云舒.

导航

SharedMemoryEx

Posted on 2004-07-10 21:42  hbiftsaa  阅读(1645)  评论(3编辑  收藏  举报
在前面的SharedMemory中,我们通过P/Invoke完成了Win32中的Mapping File的使用..
通过这个,我们可以很方便的完成.NET应用程序的进程间通讯:)

但是,由于SharedMemory的映射空间的大小是在创建对象的时候固定了的,不能很方便的进行动态修改.
在某些场合就不方便使用..

有一个方法:
1,建立两个内存映射文件.
2,一个用于数据交换,另一个用于消息传送(比如当数据交换的那个内存映射文件的大小发生改变,用于通过另一方).

在这个基础上,我写了一个SharedMemoryEx..
大家可以看看,用用,看看有没有什么问题:)
    SharedMemoryEx

注: 在CopyTo和CopyFrom前,都加入了一个检测函数.
CopyFrom前: 如果发现新的数据比申请的要大,就直接将原来的内存映射文件关掉,重新申请一个大的空间,同时修改MsgMem中的数据.
CopyTo前: 如果发现MsgMem中的消息为ChangeSize,而且新的Size大于当前的Size,就把当前的内存映射文件Release,再重新Open.

对于内存映射文件的创建者(用bool creator来标识),才可以重新Create,对于非创建者,才可以重新Open :)

希望大家喜欢:)

ps,代码就不用提供下载了吧??
...还是提供一个吧,最新的:)
SharedMemoryEx.zip