Silverlight:如何从内存中卸载(处置)图像?

时间:2009-01-11 19:02:01

标签: c# .net silverlight

我有一个显示大型jpg文件的图像控件,占用大约50mb的内存。 如果不再需要此控件,该如何处理?我尝试将其从父容器中删除,将其设置为null并将其Source属性转换为null,但内存使用率仍保持不变... 任何建议都将受到高度赞赏!

2 个答案:

答案 0 :(得分:9)

我终于找到了问题的答案。 问题出在Silverlight中的内存泄漏错误中。 我在这里找到了解决这个问题的方法: http://blogs.msdn.com/silverlight_sdk/pages/silverlight-bugs-and-workarounds.aspx

  

动态添加时内存泄漏   并删除图像

     

解决方法:动态添加或时   从中删除BitmapImages   申请(a.k.a.添加/删除   从树上),你应该设置   删除前Image.Source = null   来自树的Image元素。这个   将使BitmapImage符合条件   垃圾收集。错误状态:有效   错误。 *

感谢大家的建议!

答案 1 :(得分:0)

我认为这是Silverlight的一个边缘案例问题,因为它依赖于垃圾收集。不幸的是,如果你要实例化很多对象(我的确意味着很多)那么你将获得性能降级(即使你正确地释放所有东西和/或Dispose()所有东西)因为GC不能跟上并且我们没有像在“普通”应用程序中那样抛出资源。

你是在遇到问题,还是只是看内存?

相关问题