catena IDisposable
-
20-09-2019 - |
Domanda
Se implemento un oggetto con IDisposable, dovrebbero tutti gli oggetti che possiedono quell'oggetto attuarlo e, anche se non hanno altre risorse per rilasciare?
Soluzione
Sì. È necessario disporre di loro, in modo da avere le variabili membro vengono smaltiti correttamente.
Ogni volta che si incapsulare una classe IDisposable, si dovrebbe fare il vostro IDisposable classe. Nel vostro metodo Dispose, si dovrebbe disporre le risorse incapsulati. In sostanza, trattarli allo stesso modo si farebbe curare una risorsa nativa.
Altri suggerimenti
Se si vuole lo smaltimento deterministica, in ultima analisi, qualche cliente ha la necessità di chiamare Dispose o avvolgere le chiamate in un blocco "tramite". Per trickle down al vostro oggetto, che potrebbero richiedere che il proprietario implementare IDisposable pure.
Non si dovrebbe fare affidamento sul garbage collector per liberare tutte le risorse dipendenti dal tempo.
Sì, una classe possidente dovrebbe implementare IDisposable, ma non ha bisogno (non dovrebbe avere) un finalizzatore (distruttore).
NOP, hanno solo bisogno di utilizzare tale classe con una dichiarazione "utilizzando" per assicurarsi che essi dispongono quell'oggetto correttamente, ma gli oggetti stessi non hanno bisogno di implementare IDisplosable