hBifTs

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

2004年7月7日

前一个版本的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

posted @ 2004-07-07 17:01 hbifts 阅读(1423) 评论(19) 编辑

posted @ 2004-07-07 14:00 hbifts 阅读(671) 评论(0) 编辑