Pregunta

Tengo una condición en la que necesito para cerrar la aplicación y así que llamo this.Dispose () cuando establece un indicador certian.

Al principio pensé que era un problema de llamar a funciones después de que llamo this.Dispose () y así me movía el código para ser lo último que llama, pero sigo teniendo un "ArgumentException fue controlada" "El parámetro no es válido ". En la Application.Run (nuevo myApp ();. Línea

¿Qué estoy haciendo mal? ¿Me he perdido algo en el camino? O tal vez hay una mejor manera de cerrar la aplicación?

¿Fue útil?

Solución

Trate de usar Application.Exit() para salir de la aplicación.

Cuando se utiliza Application.Run(new MyForm());, un bucle de mensaje se crea en el hilo utilizando el objeto de forma que el formulario principal. Se intenta entregar los mensajes Win32 que están llegando a la aplicación de sus respectivos objetos. Sin embargo, cuando se llama Dispose() en el objeto de formulario, usted no ha salido del bucle de mensajes todavía. Cuando se intenta entregar el mensaje siguiente a su forma de objeto, se produce un error, puesto que ya está dispuesto y produce la excepción. Usted debe solicitar el formulario o bien que ser cerrado (llamando Close en el formulario), que a su vez pedir a la forma de procesar el evento y si se completa, salir del bucle de mensajes después. La otra forma (forma más directa) es cerrar el bucle de mensaje en el hilo completo llamando Application.Exit() lo que hará que todos los formularios relacionados con estar cerradas.

Otros consejos

Debe utilizar this.Close () en lugar de this.Dispose () para cerrar el formulario principal.

si está cerrando la aplicación y por lo tanto la descarga el dominio de aplicación que realmente no necesita llamar a Dispose (), ya que todo, desde el dominio de aplicación se elimina de la memoria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top