编辑:关闭这个,因为我发现它的原因为错误,但不是删除这个帖子..我生成一个更新的帖子,更精确的问题。反序列化抛出这个位的C#代码异常
嗨伙计,
我有一些二进制数据我在读我的心愿。将其转换为一个System.Drawing.Image
,所以我创建Image object
的实例,使用memory stream
作为输入数据。
我这样做后,我序列化然后反序列化图像(对于一些业务逻辑)。反序列化引发异常。如果我使用文件名构造函数而不是内存流构造函数创建Image
实例,它将全部工作100%。这表明Image
对象可以通过电线串行化。
我做错了memory stream
,我用过了吗?
这是我使用使图像对象的代码,它被序列之前: -
// Fake way of getting some binary (image) data.
byte[] data = File.ReadAllBytes("Chick.jpg");
using (Stream originalBinaryDataStream = new MemoryStream(data))
{
// This works perfectly fine, if use this method (which i can't).
//image = new Bitmap("Chick.jpg");
// This throws an exception when it's deserialized.
// It doesn't like the memory stream reference?
image = new Bitmap(originalBinaryDataStream);
}
这是一种尝试反序列化图像,其抛出异常代码(this is a seperate image of the exception)
alt text http://img254.imageshack.us/img254/9748/step1zx3wk5.png
有没有正确处理或不能序列化..因此抛出异常?
请帮助:)
编辑:唯一的例外是在叫我图像调试器可视。
我已经上传完整的VS2008解决方案here(1.28MB下载)。
在它是两个项目 - >的可视化类和MS测试类。如果你运行唯一的单元测试,它会抛出泛型(读:无用)GDI +异常,因为它无法反序列化通过线路传递给调试器的图像实例。如果您将它传递给使用文件路径构造函数创建的Image实例,则反序列化完美运行。
编辑2:使用不同的文件上传网站 - 欢呼!
编辑3:如何实际重现错误。
- 更改项目,在调试模式(而不是释放模式)
- 删除所有破发点。
- 打开ImageDebuggerVisualizer.cs
- 添加断点到管线22
- 现在调试的UnitTest1单元测试方法。图像将显示..关闭该窗口..然后突然你将在折点上。一步一步和繁荣! CRASH!砰。
编辑4:这里有两个SCREEN SHOTS的例外(如果你不想下载解决方案文件)。
你会得到什么例外? – 2008-11-26 12:36:08
我们需要整个代码的上下文和引发的异常。 – 2008-11-26 12:56:23
提供的解决方案链接:) – 2008-11-26 13:10:42