我有一个应用程序,我可以根据情况动态创建用户控件。当我处理完它们后,我将它们从容器中移除,但它们仍在占用内存。
我已经在代码中实现了一个“dispose”方法来清除用户控件内部的控件,但我仍然觉得有更好的方法来做到这一点。
我不确定我可以发布什么代码,因为没有真正相关的代码。
我真正拥有的是我现在使用 dispose 方法所做的事情
public void Dispose()
{
ContentWebView.NavigateToString("about:blank");
YoutubeMediaPlayer.Stop();
}
最佳答案
Dispose
方法用于释放非托管 资源。
当一个对象的所有引用都被移除时,垃圾收集器最终会“收集”它(释放内存)。您实际上无法控制这种情况何时发生,即使调用 GC.Collect
在技术上也只是一个建议。但是,您可以直接在对象上调用 dispose(请注意,如果它仍在使用中,这可能会导致奇怪的行为或异常!)
如果您怀疑某个控件有需要清理的非托管资源,您应该在完成后直接对其调用Dispose
(GDI Bitmap 对象需要像这样清理) .从你的评论来看,听起来你只需要垃圾收集器来实际释放内存,这是很难控制的(不过你可以尝试调用 GC.Collect
)。
用于处置的 MSDN:http://msdn.microsoft.com/en-us/library/system.idisposable.aspx
关于c# - 是否可以在 winrt 中完全处理用户控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23644119/