Quando ho letto alcuni articoli sulla gestione della memoria in C#, sono stato confuso dai metodi di Finalizer.Buoni esempi di utilizzo dei finalizzatori in C#
Ci sono così tante regole complicate che hanno a che fare con loro. Ad esempio, nessuno sa quando verranno chiamati i finalizzatori, CLR non garantisce che tutti i finalizzatori vengano richiamati quando i programmi si chiudono, ecc.
Per quali finalizzatori possono essere utilizzati in reale vita?
L'unico esempio che ho trovato è stato il programma che emette un segnale acustico all'avvio di GC.
Utilizzi Finalizzatori nel codice e potrebbero avere dei buoni campioni?
UPD:
finalizzatori può essere usato quando sviluppatori vogliono fare in modo che qualche classe sempre smaltito correttamente attraverso IDisposable. (link; Grazie Steve Townsend)
Ho sempre scritto una manciata di finalizzatori negli ultimi 5 anni di progetti su cui ho lavorato e si trattava tutti di classi che interagivano con un'API legacy non gestita. In condizioni normali, i finalizzatori non sono mai stati effettivamente chiamati, perché gli oggetti sono stati eliminati prima che diventassero idonei per la garbage collection e la finalizzazione è stata soppressa esplicitamente. –
@Dan Bryant - sì - non ho visto questo prima di rendere questo punto la mia risposta ... –
Ho sempre pensato che i finalizzatori fossero lì per smaltire le risorse non gestite come un fail safe nel caso in cui IDisposable.Dispose() non venga chiamato (qualcuno ha dimenticato di usare using() o, infine), e non causa alcun problema se il tuo Dispose() chiama SuppressFinalize –