今天在开发时候遇到了这个问题,我的情景是这样的:

using (MemoryStream ms = new MemoryStream(item.ImageData))
                         {
                             Image Image = Image.FromStream(Ms);
                             imageSlider1.Images.Add(Image);
                             Ms.Close();
                             Ms.Dispose();
                         }

 

使用内存流读取数据库中的图片数据,然后把流加载到Image对象,结果出现异常:GDI+ 中发生一般性错误。经查找网上一些大佬资料得出,通过这种方式获取Image,流不能被释放。

思路:将图片内容重写到一个新的对象

                        using (MemoryStream ms = new MemoryStream(item.ImageData))
                        {
                            Image Image = System.Drawing.Image.FromStream(ms);
                            Bitmap Bmp = new Bitmap(Image.Width, Image.Height);
                            Graphics Grp = Graphics.FromImage(Bmp);
                            Grp.DrawImage(Image, 0, 0);
                            imageSlider1.Images.Add(Bmp);
                            ms.Close();
                        }