星空网 > 软件开发 > ASP.net

内存映射文件MemoryMappedFile使用

参考资料: http://blog.csdn.net/bitfan/article/details/4438458

 

所谓内存映射文件,其实就是在内存中开辟出一块存放数据的专用区域,这区域往往与硬盘上特定的文件相对应。进程将这块内存区域映射到自己的地址空间中,访问它就象是访问普通的内存一样。

.NET中,使用MemoryMappedFile对象表示一个内存映射文件,通过它的CreateFromFile()方法根据磁盘现有文件创建内存映射文件,调用这一方法需要提供一个与磁盘现有文件相对应的FileStream对象。

 

需要保存的类:

内存映射文件MemoryMappedFile使用内存映射文件MemoryMappedFile使用
[Serializable]  public class MyImg  {    public Image img;    public string name;  }

View Code

 

MMF定义:

内存映射文件MemoryMappedFile使用内存映射文件MemoryMappedFile使用
public class MMF  {    private MemoryMappedFile file = null;    private MemoryMappedViewStream strem = null;    private MemoryMappedViewAccessor acces = null;    public MMF()    {      file = MemoryMappedFile.CreateOrOpen("myMMF", 1024 * 1024, MemoryMappedFileAccess.ReadWrite);      strem = file.CreateViewStream();      acces = file.CreateViewAccessor();    }    public void Write(int value)    {      acces.Write(0, value);    }    public int Read()    {      int value;      acces.Read(0, out value);      return value;    }    public void WriteClass(MyImg img)    {      IFormatter format = new BinaryFormatter();      format.Serialize(strem, img);    }    public MyImg ReadClass()    {      IFormatter format = new BinaryFormatter();      return format.Deserialize(strem) as MyImg;    }  }

View Code

 

界面代码:

内存映射文件MemoryMappedFile使用内存映射文件MemoryMappedFile使用
private void button1_Click(object sender, EventArgs e)    {      using (OpenFileDialog dlg = new OpenFileDialog())      {        dlg.Filter = "*.png|*.png";        if (dlg.ShowDialog() == DialogResult.OK)        {          this.pictureBox1.Image = Image.FromFile(dlg.FileName);          this.label1.Text = Path.GetFileNameWithoutExtension(dlg.FileName);        }      }    }    private void button2_Click(object sender, EventArgs e)    {      MyImg img = new MyImg() { img = this.pictureBox1.Image, name = this.label1.Text };      myFile.WriteClass(img);    }    private void button3_Click(object sender, EventArgs e)    {      MyImg img = myFile.ReadClass();      this.pictureBox1.Image = img.img;      this.label1.Text = img.name;    }    private void button4_Click(object sender, EventArgs e)    {      label2.Text = myFile.Read().ToString();    }    private void button5_Click(object sender, EventArgs e)    {      myFile.Write(int.Parse(this.textBox1.Text));    }

View Code

 

 

参考资料: http://blog.csdn.net/bitfan/article/details/4438458




原标题:内存映射文件MemoryMappedFile使用

关键词:内存

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

俄语在线购物网站UMKA:https://www.ikjzd.com/w/262
Shopee订单_迟发货情况取消订单:https://www.ikjzd.com/w/2620
Shopee订单退货退款:https://www.ikjzd.com/w/2621
Shopee订单状态:https://www.ikjzd.com/w/2622
Shopee支付方案_Shopee平台:https://www.ikjzd.com/w/2623
Shopee订单评价管理_Shopee订单:https://www.ikjzd.com/w/2624
美众议院对TikTok“动手”,下一步该怎么在TikTok上营销?:https://www.kjdsnews.com/a/1836587.html
速卖通在韩国争议不断,投诉量激增两倍:https://www.kjdsnews.com/a/1836588.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流