hBifTs

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

导航

更新[SharedMemory]

Posted on 2004-07-07 17:01  hbiftsaa  阅读(1839)  评论(18编辑  收藏  举报

前一个版本的SharedMemory(.NET中使用Mapping File 的API :) )有一个Bug,当多次向内存映射文件中写数据的时候,没有及时把原有的数据清除.当前一次写入的数据的长度超过当前数据的长度的时候,读的时候就会把前一次的多余的数据也读出来.

修正的方法很简单,在每次写的时候,把内存清0 :)

修改的部分的代码如下:

        public void CopyFrom(byte[] source,int startIndex,int length)
        
{
            
this.length = length;
            Clear();
            Marshal.Copy(source,startIndex,
new IntPtr(Address),length);
        }


        
public void Clear(){
            
byte[] buffer = new byte[size];
            Marshal.Copy( buffer,
0,new IntPtr(Address),size);
        }

最新版本可以到这个地方下载: SharedMemory.Zip