(1) He leído muchas preguntas sobre IDisposable donde las respuestas recomiendan no utilizar Finalize a menos que realmente lo necesite debido al tiempo de proceso involucrado.
Lo que no he visto es cuánto es este costo y con qué frecuencia se paga. ¿Cada milisegundo? ¿segundo? hora, día, etc.El costo de finalizar en .NET
(2) Además, me parece que Finalize es útil cuando no siempre se sabe si se puede eliminar un objeto. Por ejemplo, la clase de fuente de marco. Un control no puede deshacerse de él porque no sabe si la fuente está compartida. La fuente generalmente se crea en el momento del diseño, por lo que el usuario no sabrá cómo deshacerse de ella, por lo tanto, finalice las patadas para finalmente deshacerse de ella cuando no queden referencias. ¿Es esa una impresión correcta?
Lea esto: http://msdn.microsoft.com/en-us/library/ms973837.aspx –
Con respecto a la clase 'Font', en realidad se usa para dos propósitos muy diferentes en .net; encapsula un conjunto de información sobre una fuente (familia, tamaño, estilo, etc.) y también encapsula un objeto de búsqueda de GDI. La propiedad 'Font' de un control solo está interesada en la información anterior; a los controles no les importará si su propiedad 'Font' está configurada en una fuente que es' Dispose'd (¡incluso si el 'Dispose' ocurre antes de que se establezca la propiedad!) En consecuencia, si uno desea tener un campo que usará para establecer las propiedades de control de 'Fuente', se podría crear una 'Fuente' para ello y luego ... – supercat
... inmediatamente 'Eliminarla '. Un patrón un tanto extraño, sin duda, pero fundamentalmente indicativo del hecho de que .net debería haber usado una clase 'FontInfo' o una estructura para los controles '' Fuente' propiedad. – supercat