这是我的部分代码:
public void SaveBitmap()
{
EncoderParameters eps = new EncoderParameters(1);
       EncoderParameter ep = new EncoderParameter    (Encoder.ColorDepth,24L);
eps.Param[0] = ep ;
b.Save(FilePath,GetEncoderInfo("image/bmp"),eps);//设置图片的编码方式
 //第一次运行正常,程序不退出第2次运行就会报异常 GDI+ 中发生一般性错误                            b.Dispose();
graphics.Dispose();
}

//得到图像的编码信息
private ImageCodecInfo GetEncoderInfo(String mimeType)
{
ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
for(int j = 0; j < encoders.Length; ++j)
{
if(encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
查了不少资料,但是都没什么明确的解决方法,请高手赐教多谢了

解决方案 »

  1.   

    b.Dispose();
    graphics.Dispose();
    去掉
      

  2.   

    GDI+ 中发生一般性错误 是由于被保存的文件被其他程序正在使用,应该在使用完立即销毁之
      

  3.   

    b.Dispose();graphics.Dispose();
    去掉也不行啊,很早就这样做过!用什么方法可以彻底销毁,感觉这2个方法好像没有真正的释放
      

  4.   

    GDI+ 中发生一般性错误 是由于被保存的文件被其他程序正在使用,应该在使用完立即销毁之我的错误在于 PictureBox1.Image = Image.FromFile("a.bmp");每次运行到最后,我都会把PictureBox1给释放掉,但是这个a.bmp 文件,还是在被使用中,很奇怪!
    是不是这个文件已经被转化成流放到内存当中了???
    如果是那样,应该怎么去销毁它?
      

  5.   

    PictureBox1.Image = Image.FromFile("a.bmp");
    如果是这样,简单的将picturebox1.image=null就可以了。因为image得到是引用并不是一个新的实例。