Jestem świadomy, że najlepszą praktyką jest wywołanie Dispose na dowolny obiekt, który implementuje IDisposable, zwłaszcza obiektów, które zawinąć skończonych zasobów, takich jak uchwyty plików, gniazd, GDI uchwyty itpJak ważne jest wyrzucenie czcionki, naprawdę?
Ale biegnę w przypadku gdzie mam obiekt, który ma Czcionkę, i musiałbym ustawić IDisposable za pomocą kilku warstw obiektów i przejrzeć wiele zastosowań, aby upewnić się, że zawsze mam usuniętą czcionkę. I zastanawiam się, czy warto tej złożoności.
Byłoby jedno, gdyby czcionka zawijała HFONT, ponieważ zasoby GDI są globalne. Ale czcionka nie zawija uchwytu GDI; to GDI +, który jest całkowicie oddzielnym systemem i, o ile rozumiem, jest procesem lokalnym, a nie globalnym, takim jak GDI. I w przeciwieństwie do Image, Font nigdy nie trzyma zasobów systemu plików (i tak wiem).
Moje pytanie brzmi: Jaki jest faktyczny koszt wynajęcia czcionki, aby uzyskać śmieci?
Wiem, że wziąłbym mały hit dla finalizatora, ale jeśli liczba "wyciekłych" czcionek jest mała (powiedzmy pół tuzina), to trafienie uczciwie nie byłoby zauważalne. Oprócz finalizatora nie wydaje się to zbytnio różnić od przydzielania średniej wielkości tablicy i pozwalania GC na jej porządkowanie - to tylko pamięć.
Czy są jakieś koszty, których nie jestem świadomy, pozwalając, aby czcionka otrzymywała GCed?
"Często niezarządzane uchwyty są bardziej ograniczone niż pamięć" - Pewnie. Ale czy to prawda, jeśli chodzi o obsługę czcionek GDI +? To część mojego pytania. –