我用来从资源StreamResourceInfo.Stream
中获取s 。使用后和流BitmapImage
正确吗?我问是因为在内存分析器中,如果我这样做会出错。内存分析器表示已处置的实例尚未被 GC。 Close
Dispose
如果我在网上看,我只能找到这个主题的帖子。在这篇文章中,回复者说,处置是有意义的。但是,如果我看情况和效果,我认为这是不对的。有人知道什么是正确的行动吗?
附加信息:在我看到的 msdn 示例中,它们没有 Dispose 或 Close。
编辑
感谢 Rick Sladkeys 的回答,我找到了解决方案:我分配StreamResourceInfo.Stream
给. 在msdn中是这样写的:StreamSource
BitmapImage
如果您希望在创建 BitmapImage 后关闭流,请将 CacheOption 属性设置为 BitmapCacheOption.OnLoad。默认的 OnDemand 缓存选项保留对流的访问,直到需要位图,并且清理由垃圾收集器处理。
这意味着,BitmapImage
获取流的所有权。这就是为什么如果我手动关闭/处理流,内存分析器会显示错误:位图将持有对流的引用(BitmapCacheOption OnDemand),因此只要 BitmapImage 有效,GC 就不会释放它,但流已经明确处置。在这个特定的例子中,处理是一个坏主意。
为了完整起见,我还在 msdn 中查看了上面TextRange.Load
调用链接的示例。对于Load
,它是相反的,Load
不占用所有权,因此流必须在完成后关闭/处置。