C#从图像中释放内存,将其分配给null

时间:2017-09-10 15:51:19

标签: c# wpf image memory-leaks

我正在制作视频游戏。在这个级别,我需要找到一种方法来从图像释放内存,一旦我将它们的源设置为null。

当我不使用图像时,其源被设置为空。

imgExample.Source = null;

但它没有足够的记忆力。

当我对MediaElements做了类似的事情时,我使用这种方法来释放未使用的内存:

        foreach (MediaElement thisMedia in Videos)
        {
            thisMedia.Source = null;
            thisMedia.Stop();
            thisMedia.Close();
        }

然后申请:

GC.Collect();

在相关地点。

现在,我正在尝试用Images做类似的事情。 "关闭"无法在图像上使用。我尝试使用" Freeze()"但它只会变得更糟。在任何情况下,在为Image分配新的源时使用Freeze,而我想要相反 - 当source变为null时执行某些操作。

我尝试使用谷歌搜索问题,并进入此页面: https://msdn.microsoft.com/en-us/library/system.drawing.image(v=vs.110).aspx

我认为这些方法:" Dispose"和#34;敲定"可能很有用。

但是,我不能使用:

imgExample.Dispose();

imgExample.Finalize();

方法不正确,或者我错过了使用指令。

处理未使用的内存的正确方法是什么?

编辑:我忘了说,那是" imgExample"是XAML中定义的图像。最好不要用后面的代码中的新图像替换这些图像。

0 个答案:

没有答案