在我的应用程序(音乐播放器)中,我有一个名为“游戏模式”的功能,它可以停止除播放音乐之外的所有后台操作,我也想释放一些内存。
E.g。 我在我的窗口中有基础网格上的背景图像,我设置了这种方式
BaseGrid.Background = new ImageBrush("the image");
在GameMode方法中,我做了类似这样的事情
BaseGrid.Background = null;
GC.Collect();
但它在第一次调用时没有释放任何内存,当我第二次调用该方法时,或者如果我在nulling和GC.Collect之间粘贴MessageBox.Show方法也可以。
所以我的问题是。 将Background设置为null需要一些时间的异步操作和GC.Collect在归零后如此早地调用它或者它可能是另一个问题时没有看到未使用的对象?
答案 0 :(得分:0)
什么时候打电话
GC.Collect();
你应该致电
GC.WaitForPendingFinalizer()
也
答案 1 :(得分:0)
使用:
GC.WaitForPendingFinalizer();