Semplice informazioni sul metodo Dispose

venerdì 19 maggio 2006 - 18.30

trinity Profilo | Guru

Dopo che ho utilizzato una SqlCommand eseguo sempre il metodo Dispose di questa cioè SqlCommand.Dispose

Pensavo di utilizzare il metodo dispose anche alla ciusura di una form in questo modo:

Me.Close()
Me.Dispose()

ma navigando in internet ho letto che la form nel metodo close esegue già il dispose e pertanto non è necessario ri-eseguirlo.

E' verò?

Ps alla chiusura della form tutti gli oggetti ide al suo interno eseguo direttamente il Dispose in automatico?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

alextyx Profilo | Expert

Per quanto mi ricordo, il metodo close di una classe ben fatta richiama il metodo dispose, che a sua volta richiama il metodo dispose della classe da cui eredita (Mybase.Dispose) e poi provvede a disporre le risorse aggiunte rispetto alla classe base. Normalmente il metodo dispose è strutturato in maniera da poter essere chiamato più volte senza che si verifichino problemi, in genere con una variabile statica all'interno della procedura che impedisce di eseguire due volte le stesse istruzioni.Quindi la risposta dovrebbe essere: "Il metodo close rende inutile la chiamata esplicita al metodo dispose". Non so se esistano significative eccezioni, ma io insisto a scrivere come te, cioè close+dispose, pur dicendomi che sbaglio. Una cosetta in più che invece può meritare di essere presa in considerazione è l'assegnare il valore nothing in maniera esplicita ad un oggetto. Infatti l'aver chiamato il metodo dispose non assicura affatto che l'oggetto sia divenuto = nothing. In effetti esso risulta solo disponibile per una garbage collection, ma non è predicibile quando questa avvenga, a meno di non chiamarla esplicitamente e dal momento che tale operazione avviene su un thread separato, per avere la certezza che essa sia stata eseguita, si deve esplicitamente aspettarne la fine ( mi pare che l'istruzione sia qualcosa come GC.waitforpendingfinalize).
Insomma, credo che la profonda comprensione di questi meccanismi trascenda le capacità cognitive di un primate superiore del livello dell'uomo . Solo alla Microsoft esiste una razza eletta, geneticamente modificata, capace di assurgere a livelli talmente elevati di consapevolezza, da poter concepire simili meccanismi. Per noi poveri sapiens-sapiens non rimane che la triste presa di coscienza dei nostri ristretti limiti
.... e ancora non si è parlato delle 'generazioni' (che sono 3, mi pare) degli oggetti contrassegnati per l'eliminazione
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5