Voy a intentar explicarlo un poco. Cuando se cierra un formulario SÍ se liberan todos sus recursos, y un poco más abajo te copio una parte de la ayuda de .NET que lo corrobora. Lo que ocurre es que la memoria que se libera se "devuelve" a la plataforma, es decir no se libera realmente. Lo envía a una especie de "recolector de basura" como el java. Si al poco de cerrar un formulario vuelves a abrirlo, probablemente le asigne la misma zona de memoria que ya tenía, y por eso el formulario se muestra igual que la última vez, pero eso no quiere decir que no se haya liberado.
Cuando hablas de destruir el formulario estás hablando de ejecutar su "destructor" y eso ya lo hace automáticamente él en los tres casos siguientes:
1º-. En el close
2º-. Cuando estableces el valor del objeto a Nothing
3º-. Cuando desaparece la última referencia a ese objeto.
:smt004
Form.Close (Método)
Cierra el formulario.
[Visual Basic]
Public Sub Close()
[C#]
public void Close();
[C++]
public: void Close();
[JScript]
public function Close();
Excepciones
Tipo de excepción Condición
InvalidOperationException El formulario se ha cerrado mientras se creaba un identificador.
Comentarios
Cuando se cierra un formulario, todos los recursos creados con el objeto se cierran y se elimina el formulario. Se puede impedir el cierre de un formulario en tiempo de ejecución controlando el evento Closing y estableciendo la propiedad Cancel del CancelEventArgs que se pasa como parámetro al método de control de eventos. Si el formulario que se va a cerrar es el formulario de inicio de la aplicación, ésta se cierra.
Nota Cuando se llama al método Close en un Form que se muestra como ventana no modal, no se puede llamar al método Show para que el formulario esté visible, porque ya se han liberado los recursos del formulario. Para ocultar un formulario y volver a hacerlo visible, use el método Control.Hide.
PRECAUCIÓN No se provocan los eventos Form.Closed y Form.Closing cuando se llama al método Application.Exit para salir de la aplicación. Si se dispone de código de validación en cualquiera de estos eventos que deben ejecutarse, hay que llamar al método Form.Close por cada formulario abierto de forma individual antes de llamar al método Exit. |