如何编写不泄漏内存的Silverlight控件

我刚刚使用ANTS Memory Profiler(辉煌!)研究了一些Silverlight控件,并发现我的一些控件正留在内存中。 解决这个问题的方法是在控制'Unloads'并清除我在代码中完成的任何绑定时将Template和Content值重置为null。

这是处理Silverlight自定义控件的正常模式,并且我过去没有正确执行此操作?

有没有人知道一个范例,例如使用整理清理编写Silverlight控件的模式?

附录我一直在研究这一点,发现当DataContext设置为null时,DataContext的绑定被删除。 看起来,正确的过程是在Loaded事件中设置任何Datacontext值,并在Unloaded事件中将其设置为null。 我仍然遇到了编写Silverlight模板控件的范例的一个基本问题,因为我不能强制ContentControls被销毁(请参阅我的问题:为什么Silverlight ContentControls不是垃圾回收?)。


MS发布了包含内存泄漏修复的Silverlight 4 GDR3,我不确定这是否可以修复您的情况,但值得下载最新的SL版本并再次测试。

http://timheuer.com/blog/archive/2011/02/14/silverlight-february-2011-update-gdr3.aspx


你知道哪里泄漏? 它是在你的还是在MS代码中?

这是关于SL中泄漏检测的好帖子:http://dotnetspeak.com/index.php/2010/09/using-windbg-to-find-memory-leaks-in-silverlight-applications/


我的问题似乎与我希望拥有可重新加载的控件有关。 我在这里再次提出了这个问题:应该将Silverlight控件重新加载到页面上吗?

链接地址: http://www.djcxy.com/p/3895.html

上一篇: How to write Silverlight Controls that don't leak memory

下一篇: Post WP7 Game Achievements from XNA to Facebook