如何判断我的silverlight用户控件是否被处置/销毁?
通常我可以使用析构函数,但是我遇到了telerik控件中存在内存泄漏的情况。它可以防止析构函数被调用。
有一个名为'Unloaded'的控件事件,但我的控件位于选项卡上。更改选项卡后,将触发“已卸载”事件。
我有一个解决内存泄漏问题的方法,但是我需要注意控件正在被销毁并执行我的'work around'这一事实。
有什么想法吗?
答案 0 :(得分:3)
我不知道您项目的详细信息,但也许您可以从标签中处理已卸载事件。在这种情况下,您可以确保从当前对象树中卸载所有子控件中的选项卡。您还可以处理 Application.Exit ,如果您在浏览器外处理过程中运行代码,则可以使用Window.Closing事件(在Silverlight 4或更高版本中可用)。
答案 1 :(得分:1)
问题是你真的需要知道何时销毁或处置UserControl?如果您在Loaded和Unloaded事件中构建并拆除控件(事件处理程序,子项等),那么您应该能够正确处理控件何时变为不可见(与可视树断开连接)以及何时控件正在被删除。我们在上一个Silverlight 4应用程序中使用了这种方法,允许您设计组织;从组织能力到所需设备的一切。该应用程序有很多视图来来往往,所以我们需要确保所有内容都被正确解开。