MemoryStream的ReadTimeout异常

时间:2015-01-27 13:50:48

标签: c# visual-studio-2008

以下方法抛出此异常

  

System.IO.Stream)(ms))。ReadTimeout引发了类型异常   System.InvalidOperationException'

这是方法:

private static byte[] ImageToByteArraybyMemoryStream(Bitmap bmp)
{
    using (MemoryStream ms = new MemoryStream()) {
        bmp.Save(ms, bmp.RawFormat);        
        return ms.ToArray();
    }
}

但是,此错误不会一直发生。我会试着简单解释一下会发生什么:

  • 我从文件加载位图,显示它并将其存储在Dictionary<int,Bitmap>
  • 当应用程序关闭时,我将位图写入应用程序配置文件byte[](并且无异常
  • 在应用程序启动时,我从config-file加载位图并显示它
  • 当用户更改应用程序数据(如调整大小或移动位图)时,我重写配置文件的方式与从文件加载位图时的方式相同,并且发生异常

2 个答案:

答案 0 :(得分:0)

我只是谷歌搜索&#34;通用gdi +错误&#34;其他人也遇到了bmp.Save方法的问题。他们的解决方法是从您要保存的位图创建一个新的位图,然后保存该副本。

...
Bitmap copy = new Bitmap(bmp); 
copy.Save(ms, copy.RawfFormat);
...

也许这也适合你,我不能告诉你这个错误的原因,它被称为其他网站上的错误。

Other Post discussing this Problem

答案 1 :(得分:0)

我遇到了这个问题,花了一段时间才了解到,上传图像的对象没有释放其定位的内存并锁定了它!并且垃圾回收没有处理该对象,因此API无法流式传输图像。 它以某种方式第一次工作,然后会引发错误。

解决方案: 我使用HttpPostFileBase上传图片,完成后将其设置为null

就是这样!