Нужно ли выпускать растровую локальную переменную? - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть метод ниже, который вызывается. В нем я создаю локальную переменную Bitmap, а затем она передается в качестве аргумента экземпляру пользовательского класса. Мое сомнение: я должен избавиться от растрового объекта?

    public void AddSnapshot(int width, int height)
    {
        Bitmap bmp = null;
        try
        {
            bmp = new Bitmap(width, height);
            MyClass mc = new MyClass(bmp);              
        } 
        catch (Exception)
        {
            if (bmp != null) bmp.Dispose();
        }
    }

1 Ответ

0 голосов
/ 06 ноября 2018

Ссылаясь на MSDN, не только в этом случае вы должны его утилизировать.

"Всегда вызывайте Утилизировать, прежде чем отпустить последнюю ссылку на Образ. В противном случае используемые им ресурсы не будут освобождены до сборщик мусора вызывает метод Finalize объекта Image. "

Как вы делаете через:

bitmap.Dispose();

Относительно: https://docs.microsoft.com/de-de/dotnet/api/system.drawing.bitmap?view=netframework-4.7.2

Битовое изображение получено из Image, и MSDN говорит, что вы должны позвонить Dispose() на изображениях.

...