弄清楚何时处理silverlight用户控件

时间:2010-12-06 03:52:32

标签: c# .net silverlight user-controls

如何判断我的silverlight用户控件是否被处置/销毁?

通常我可以使用析构函数,但是我遇到了telerik控件中存在内存泄漏的情况。它可以防止析构函数被调用。

有一个名为'Unloaded'的控件事件,但我的控件位于选项卡上。更改选项卡后,将触发“已卸载”事件。

我有一个解决内存泄漏问题的方法,但是我需要注意控件正在被销毁并执行我的'work around'这一事实。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我不知道您项目的详细信息,但也许您可以从标签中处理已卸载事件。在这种情况下,您可以确保从当前对象树中卸载所有子控件中的选项卡。您还可以处理 Application.Exit ,如果您在浏览器外处理过程中运行代码,则可以使用Window.Closing事件(在Silverlight 4或更高版本中可用)。

答案 1 :(得分:1)

问题是你真的需要知道何时销毁或处置UserControl?如果您在Loaded和Unloaded事件中构建并拆除控件(事件处理程序,子项等),那么您应该能够正确处理控件何时变为不可见(与可视树断开连接)以及何时控件正在被删除。我们在上一个Silverlight 4应用程序中使用了这种方法,允许您设计组织;从组织能力到所需设备的一切。该应用程序有很多视图来来往往,所以我们需要确保所有内容都被正确解开。