Ciao, quando l'utente chiude la finestra, essa viene sottoposta a .Dispose(). Non dovresti mantenere dei riferimenti ad istanze di cui è stato fatto il Dispose() perché questa è una potenziale causa di
memory leak.
Per questo ti consigliavo di sottoscrivere l'evento Closed, perché era anche una buona occasione per dereferenziare l'oggetto, cioè settare la variabile a null.
Se continui ad usare la referenza anche dopo l'invocazione del .Dispose incapperai in eccezioni di tipo
ObjectDisposedException.
Anzi, volendo proprio sfruttare questo sistema potresti fare una cosa del genere, che però non ti consiglio:
try{
finestra.Show();
} catch (ObjectDisposedException exc){
//la finestra era stata chiusa
}
Il punto è questo: se devi compiere delle operazioni anche DOPO che l'utente ha chiuso la finestra, ad esempio per copiarti delle informazioni che aveva digitato in essa, puoi sottoscrivere l'evento Closing ed, eventualmente, impedire la chiusura della finestra se proprio non vuoi che venga distrutta. Potresti rendere la finestra invisibile all'utente ma resterebbe comunque presente in memoria nel caso avessi bisogno di mostrarla di nuovo più tardi.
ciao
Modificato da BrightSoul il 10 gennaio 2012 23.02 -