Утилизация кистей

У меня есть несколько проблем с памятью из-за долго работающего приложения; Я проверял методы рисования, чтобы убедиться, что кисти правильно расположены. В случае, когда в аргументе функции создается Brush, будет ли кисть удалена после вызова?

Дело описано ниже:

     g.DrawString(valueText, Font, new SolidBrush(Color.Red),

person Brad    schedule 30.08.2009    source источник


Ответы (2)


Я не совсем уверен, но я не верю, что это так. Это было бы безопаснее:

using(var redBrush = new SolidBrush(Color.Red)
{
    g.DrawString(valueText, Font, redBrush);
}
person AJ.    schedule 30.08.2009
comment
Как насчет использования Brushes.Red? Нет необходимости создавать их экземпляры. И вы не должны их распоряжаться, так что никакого «использования (....)» тоже нет. - person toong; 28.01.2014
comment
Поскольку это компилируется, это означает, что кисть одноразовая, и поэтому ее следует утилизировать. - person Loren Pechtel; 22.03.2017

Нет, вы должны сделать это вручную. Однако проверьте классы Brushes и SystemBrushes для готовых кистей, которые можно использовать, не создавая новые (и которые вам тоже не нужно/не следует утилизировать).

person Fredrik Mörk    schedule 30.08.2009
comment
Вы не можете утилизировать стандартные кисти. Если попробуешь, выкинет. - person Henk Holterman; 30.08.2009