1

我有wp7的申请。我有必要从 Byte 数组中获取 BitmapImage。我这样做:

using (MemoryStream stream = new MemoryStream(rawImageBytes))

                {               
                    BitmapImage imageSource1 = new BitmapImage();
                    imageSource1.CreateOptions = BitmapCreateOptions.None;
                    imageSource1.SetSource(stream);
                }

运行后,在 string imageSource1.SetSource(stream); 我有错误 在此处输入图像描述

4

3 回答 3

0

stream.Dispose() 将在 using 语句结束时调用。当 imageSource1 发现它的源是死流时,它会抛出异常。

于 2013-05-10T14:57:20.340 回答
0

我这样做了几次没有问题。也许,这只是因为您的 rawImageBytes 没有 Header 信息。要使用 rawImageBytes,您需要使用 WritableBitmap。我推荐 WriteableBitmapExtension http://writeablebitmapex.codeplex.com/releases/view/39577

wr = New WriteableBitmap(New Io.MemoryStream(rawImageBytes)) 

基础知识也很有趣:http: //www.windowsphonegeek.com/articles/encode-and-decode-images-in-wp7

于 2012-11-23T12:48:01.297 回答
0

我相信杰的回答是对的。

using 语句将导致在 MemoryStream 上调用 Dispose() 方法。这向垃圾收集器发出信号,在清理 MemoryStream 引用之前需要进行一些处理。因此,在完全删除对象之前,需要两次垃圾收集器的 Collect 执行。

问题没有一直出现的原因正是因为只要垃圾收集器还没有运行,MemoryStream 仍然可以访问。但是,一旦 GC 运行,您的 MemoryStream 引用就处于不可用状态。

于 2014-06-20T13:53:38.300 回答