Cómo evitar excepciones al cerrar un formulario al llamar un control entre hilos no puede acceder a los objetos eliminados. Al llamar a un formulario entre hilos dentro de un hilo, y al usar invocar para asignar valores o cambiar propiedades a los controles del formulario, si el hilo no termina antes de cerrar el formulario, siempre aparecerá una excepción como esta: no se puede acceder a un objeto eliminado. La razón debería ser que cuando se llama al control de formulario en el hilo, el formulario ha sido cerrado de sesión, por lo que sale de todos los hilos antes de que el formulario se cierre de sesión. Para resolver este problema, puedes añadir el siguiente código:
Ya no aparecerá la excepción. Llamar a system.environment.exit(0) puede cerrar completamente el programa, sin importar qué hilo se vea obligado a cerrar, terminando el programa de forma muy limpia.
Evento de cierre FormEnding
Cuando el formulario se cierra, ocurre el evento FormClosure. Este evento está gestionado. Esto libera todos los recursos relacionados con el formulario.
Si cancelas este evento, el formulario permanece abierto.
Cuando el formulario aparece como un cuadro de diálogo de modo, al hacer clic en Cerrar se oculta el formulario y se establece la propiedad ResultadDiálogo en Cancelar. Al establecer la propiedad ResultadDiálogo en algunos eventos, el valor del ResultadoDiálogo puede ser anulado cuando el usuario haga clic en el botón de cerrar en la esquina superior derecha.
Evento FormClosed
Un evento FormClosed ocurre después de que el método Cerrar o Salir de la clase de usuario o Aplicación cierra el formulario.
Puedes usar este evento para liberar algunos de los recursos del formulario. También puedes usar este evento para guardar información en el formulario de entrada o para actualizar el formulario padre.
|