是否有可能在winrt中完全删除一个用户控件?

本文关键字:一个 用户 控件 删除 有可能 winrt 是否 | 更新日期: 2023-09-27 18:03:08

我有一个应用程序,我根据情况动态创建用户控件。当我把它们从容器中移除时,它们仍然占用内存。

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

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

我真正拥有的就是我现在用dispose方法做的事情

  public void Dispose()
        {
            ContentWebView.NavigateToString("about:blank");
            YoutubeMediaPlayer.Stop();
        }

是否有可能在winrt中完全删除一个用户控件?

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

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

如果你怀疑一个控件有需要清理的非托管资源,你应该在你完成它的时候直接调用Dispose (GDI位图对象需要这样清理)。从你的评论中,听起来你只需要垃圾收集器来实际释放内存,这是很难控制的(你可以尝试调用GC.Collect)。

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