1

在我的应用程序(音乐播放器)中,我有一个名为“游戏模式”的功能,它会停止除播放音乐之外的所有后台操作,我也想释放一些内存。

例如,我在我的窗口中设置了基本网格上的背景图像

BaseGrid.Background = new ImageBrush("the image");

在 GameMode 方法中,我做了这样的事情

BaseGrid.Background = null;
GC.Collect();

但它在第一次调用时并没有释放任何内存,当我第二次调用该方法时,或者如果我在 nulling 和 GC.Collect 之间粘贴 MessageBox.Show 方法,它也可以工作。

所以我的问题是。将 Background 设置为 null 需要一些时间的异步操作,并且 GC.Collect 在清空后这么早就调用它时没有看到未使用的对象,或者它可能是什么其他问题?

4

2 回答 2

0

利用:

GC.WaitForPendingFinalizer();
于 2013-06-20T17:36:03.253 回答
0

当你打电话

    GC.Collect();

你应该打电话

    GC.WaitForPendingFinalizer()

于 2013-06-20T17:34:35.093 回答