是否可以在winrt中完全处理用户控件?

时间:2014-05-14 01:15:39

标签: c# windows-runtime

我有一个应用程序,我根据情况动态创建用户控件。当我完成它们后,我将它们从容器中移除,但它们仍在占用记忆。

我在代码中实现了一个“dispose”方法来清除用户控件内部的控件,但我仍然觉得有更好的方法可以做到。

我不确定我可以发布什么代码,因为没有代码真正相关。

我真正拥有的就是我现在使用的处理方法

  public void Dispose()
        {

            ContentWebView.NavigateToString("about:blank");
            YoutubeMediaPlayer.Stop();
        }

1 个答案:

答案 0 :(得分:2)

Dispose方法用于释放非托管资源。

当删除对对象的所有引用时,垃圾收集器最终将“收集”它(释放内存)。你实际上无法控制何时发生这种情况,即使调用GC.Collect在技术上只是一个建议。但是,您可以直接调用对象上的dispose(请注意,如果它仍在使用中,这可能会导致奇怪的行为或异常!)

如果您怀疑控件具有需要清理的非托管资源,则应在完成后直接调用Dispose(GDI Bitmap对象需要像这样清理)。根据你的评论,听起来你只需要垃圾收集器来实际释放内存,这是很难控制的(你可以尝试调用GC.Collect)。

MSDN for Dispose:http://msdn.microsoft.com/en-us/library/system.idisposable.aspx