包含另一个流的Stream的实现

时间:2011-01-31 20:41:39

标签: c# .net vb.net filestream out-of-memory

嗯,我想我必须制作一个与Out of memory exception while loading images

中发现的问题有关的三部曲。

所以这是第二部分。

根据答案 - 发现上述帖子的评论,迟早任何计算机在执行我的代码时都会耗尽内存。 :(

但是感谢Google我根据作者找到了一种应用WrappingStream Implementation.的方法

  

BitmapImage保留对引用的引用   源流(大概是这样的   您可以阅读StreamSource属性   在任何时候),所以它保持   MemoryStream对象是活着的。   不幸的是,尽管如此   已调用MemoryStream.Dispose,   它不会释放那个字节数组   内存流包装。所以,在这   case,bitmap是引用流,   这是引用缓冲区,可能   占用了很多空间   大对象堆。请注意那里   不是真正的内存泄漏;当有   所有都不再是对位图的引用   这些对象将(最终)成为   垃圾收集。但是因为位图   已经制作了自己的私人副本   看来,图像(用于渲染)   相当浪费   现在不必要的原始副本   位图仍在内存中。

所以这里有几个问题。 (在开始投票之前,请记住我是新手!)

我可以使用WrappingStream类来避免内存不足错误吗? 如果第一个是真的,我如何采用它并使其与我的example?

一起使用

谢谢

2 个答案:

答案 0 :(得分:1)

  

我可以使用WrappingStream类来避免内存不足错误吗?

不,它针对的是另一个问题。

答案 1 :(得分:1)

System.Net.Http.Formatting.Internal.DelegatingStream应符合条款。太糟糕了,微软还没有在框架中公开这个类。

https://github.com/ASP-NET-MVC/aspnetwebstack/blob/4e40cdef9c8a8226685f95ef03b746bc8322aa92/src/System.Net.Http.Formatting/Internal/DelegatingStream.cs