代码之家  ›  专栏  ›  技术社区  ›  G Gr Joseph Marikle

内存不足列表框图片查看器

c#
  •  0
  • G Gr Joseph Marikle  · 技术社区  · 14 年前

    嘿,当我单击一个空位图图像时,出现内存不足的问题。

            private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
    
    
    
            //if (pictureBox1.Image != null)
            //   try
            //   {
                    pictureBox1.Image = System.Drawing.Image.FromFile("C:/folder/" + listBox1.SelectedItem.ToString());
    
            //}
    
           //catch (NullReferenceException)
           //{
    
           //    MessageBox.Show("The image box is empty!");
           //}
    
        }
    

    我试过一次,但没成功。任何帮助都很好,谢谢。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Hans Passant    14 年前

    没有“空位图”这样的东西。您的位图可能只包含黑白像素。它需要的内存和一张同样大小的照片同样多。当OOM很大时,它也能生成一个OOM异常。

    或者因为你忘记处理旧的,你点击了好几次:

      if (pictureBox1.Image != null) pictureBox1.Image.Dispose();
      pictureBox1.Image = null;
      pictureBox1.Image = System.Drawing.Image.FromFile(...);
    

    图像文件格式也可能有问题,可能是GDI+不支持的格式。不幸的是,这也会产生OOM。如果相关:不要尝试加载.txt文件。