C# 是否可以在winrt中完全处理usercontrol?

C# 是否可以在winrt中完全处理usercontrol?,c#,windows-runtime,C#,Windows Runtime,我有一个应用程序,可以根据情况动态创建用户控件。当我处理完它们后,我将它们从容器中移除,但它们仍然占用内存 我已经在代码中实现了一个“dispose”方法来清除用户控件中的控件,但我仍然觉得有更好的方法可以做到这一点 我不确定我可以发布什么代码,因为没有代码是真正相关的 我真正拥有的就是我现在使用dispose方法所做的一切 public void Dispose() { ContentWebView.NavigateToString("about:

我有一个应用程序,可以根据情况动态创建用户控件。当我处理完它们后,我将它们从容器中移除,但它们仍然占用内存

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

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

我真正拥有的就是我现在使用dispose方法所做的一切

  public void Dispose()
        {

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

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

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

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


Dispose的MSDN:

这就是问题所在。默认情况下,Usercontrols不实现iDiposable。由我自己写。Webview也没有实现iDisposable,这就是我导航到blank的原因。这实际上很好地卸载了加载到webview中的任何内容。我有一个youtube播放器,它将继续播放aver,所有引用都将被删除。这就是为什么我停止它的处置。到目前为止,我所拥有的是我能想到的最好的。我绝对不能删除它,因为它是目前唯一可以清除内存的东西。好吧,你停止它。你能给它打电话吗?听起来你正在尽一切可能释放内存,只需要收集器来实际收集内存(正如我的回答所指出的)。我错过了你问题的重点吗?稍微澄清一下:GC不会“调用
Dispose
处理所有事情”。哦!嗯,我试过处理网络视图,但从未尝试过使用媒体播放器。是的,我可以处理它。它工作得很好。我想你明白了我问题的主旨,你的链接很有帮助。我只是不确定我是否已经尽力了。谢谢您的帮助。@BradleyDotNET您应该删除“GC调用
Dispose
on everything”语句。事实并非如此。(在此直接标记您,以便您收到通知)刚刚在MS connect上看到类似问题,他们说这是出于设计: