Newsgroup: it.comp.lang.visual-basic
Titolo: [vb.net] Evento form.close: non rilascia le risorse?

Citando l'help di 
vb.net
 a proposito dell'evento form.close:
"Quando un form viene chiuso vengono chiuse tutte le risorse create
all'interno dell'oggetto e il form viene eliminato".
Non capisco però perché alcune variabili me le ritrovo valorizzate al
successivo caricamento modale della form stessa. Per esempio, l'elenco
"GridColumnStyles" delle varie colonne di un data grid, aggiunte ad un
oggetto "DataGridTableStyle", la prima volta che entro nel form contiene 5
colonne, la seconda 10, la terza 15 e così via... insomma, quando ricarico
la form, questa contiene già i valori impostati in precedenza nell'evento
form.load.
Mi aspettavo, invece, che l'oggetto datagrid venisse distrutto e con esso
tutti gli oggetti della form (dichiarati con la Dim)... in cosa sbaglio?
Per la cronaca, ho risolto mettendo il comando grid.GridColumnStyles.Clear()
all'inizio dell'evento load.
ciao e grazie
GigioTD
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 all'inizio dell'evento load.
Ops... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
qui volevo scrivere OggettoGridTableStyle.GridColumnStyles.Clear()


L'Help fa riferimento alle risorse GDI non alle istanze delle varie classi 
che compongono il form (che e'a tutti gli effetti una classe che eredita da 
Form)
Prova a tentare di accedere alla proprieta'Handle di uno dei qualsiasi 
controlli contenuti nel form e te ne renderai conto direttamente.
HTH
-- 
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET - 
http://www.ugidotnet.org
Weblog: 
http://blogs.ugidotnet.org/corrado/

 Form)
Quindi non c'é modo di liberare la memoria occupata da queste classi quando
chiudo una form?
Porca miseria.... ma vedi un po'!
Ciao e grazie!


 Porca miseria.... ma vedi un po'!
La form viene chiusa e distrutta oppure solo chiusa?
ovvero l'istanza di oggetto che hai creato per aprirla viene settata a 
nothing/esce di scope oppure e' ancora valida?
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown 

 La form viene chiusa e distrutta oppure solo chiusa?
Da quanto ho capito, la form viene distrutta, ma non le classi che la
compongono, ovvero i vari controlli. Certo che é strana questa cosa.... ma
di fatti é così che funziona!
Ciao


 di fatti é così che funziona!
Forse non mi sono spiegato... *tu* come la chiudi la form? il metodo Close 
si preoccupa solo di chiudere l'interfaccia grafica, ma nel tuo codice la 
variabile oggetto viene distrutta esplicitamente oppure no? e se no, e' una 
variabile locale che esce di visibilita' o una variabile public messa in un 
modulo che quindi rimane attiva finche' gira il programa?
La parte "visibile" della form e' solo una caratteristica particolare, ma se 
la consideri come classe, allora i vari controlli rappresentano delle 
proprieta', e anche se la chiudi e riapri finche' un istanza di oggetto e' 
valida i valori delle sue proprieta' vengono conservati.
Se la distruggi e la reistanzi ancora, allora riparti effettivamente da 
zero.


 zero.
Ma per distruggerla c'é un comando standard? Forse basta assegnare 'nothing'
all'oggetto?


 all'oggetto?
Esattamente


 Esattamente
Ma in .NET non c'è tutta quella bella storia dei Finalize e del garbage 
collector?
Non è che centra quello?
Ciao!
    Diego 

 collector?
Tutta quella bella storia infatti si attiva quando l'oggetto non e' piu' 
puntato da nessuno; ma se, come sembra di aver capito, lui ha una variabile 
di tipo Form (immagino una finestra secondaria) dichiarata locale nella sua 
form Main, fintanto che non chiude la Main o non usa esplicitamente '= 
Nothing' sulla stessa, il GC non puo' intervenire perche' l'oggetto e' vivo.
