Sono consapevole del fatto che la procedura migliore è chiamare Dispose su qualsiasi oggetto che implementa IDisposable, in particolare oggetti che racchiudono risorse limitate come handle di file, socket, handle GDI, ecc.Quanto è importante disporre un font, davvero?
Ma sto correndo in un caso dove ho un oggetto che ha un font, e dovrei scandagliare IDisposable attraverso diversi strati di oggetti, e rivedere molti usi, per essere sicuro di avere sempre il carattere disposto. E mi chiedo se ne valga la pena.
Sarebbe una cosa se Carattere ha avvolto un HFONT, perché le risorse GDI sono globali del sistema. Ma il carattere non include un handle GDI; è GDI +, che è un sistema completamente separato e, per quanto ho capito, è process-local, non system-global come GDI. E a differenza di Image, Font non tiene mai le risorse del filesystem (che io conosca, comunque).
Quindi la mia domanda è: qual è il costo reale di consentire a un font di raccogliere i rifiuti?
So che vorrei ottenere un piccolo successo per il finalizzatore, ma se il numero di caratteri "persi" è piccolo (diciamo una mezza dozzina), quello colpito onestamente non sarebbe evidente. A parte il finalizzatore, questo non sembra molto diverso dall'assegnare un array di medie dimensioni e lasciare che il GC lo pulisca: è solo memoria.
Ci sono dei costi di cui non sono a conoscenza nel consentire a un font di ricevere GCed?
"Spesso le maniglie non gestite sono più limitate della memoria" - Sicuro. Ma è vero per i manipoli di caratteri GDI + in particolare? Questa è parte della mia domanda. –