2009-08-30 11 views
5

Mam kilka problemów z pamięcią z długotrwałą aplikacją; Sprawdzałem metody malowania, aby upewnić się, że szczotki są odpowiednio ułożone. W przypadku gdy Brush zostanie utworzony w argumencie funkcji, czy pędzel zostanie usunięty po wywołaniu?Utylizacja szczotek

Przypadek przedstawiono poniżej:

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

Odpowiedz

9

nie jestem do końca pewien, ale nie wierzę, że jest. To byłoby bezpieczniejsze:

using(var redBrush = new SolidBrush(Color.Red) 
{ 
    g.DrawString(valueText, Font, redBrush); 
} 
+3

Możesz być pewien. –

+0

A co z używaniem Brushes.Red? Nie ma potrzeby ich tworzenia. I nie wolno ich wyrzucać, więc nie ma "używania (...)" albo – toong

+0

Ponieważ to kompiluje, oznacza to, że szczotka jest jednorazowego użytku i dlatego powinna zostać usunięta. –

4

Nie, powinieneś zrobić to ręcznie. Należy jednak przeanalizować klasy Brushes i SystemBrushes, dotyczące gotowych pędzli, z których można korzystać bez tworzenia nowych (i których również nie trzeba/nie należy usuwać).

+0

Nie można pozbyć się szczotek magazynowych. Jeśli spróbujesz, rzuci. –

+2

Cóż, nie powinieneś .Dispose() szczotki zapasowe ... – toong