2011-08-21 24 views
8

Tengo una aplicación C# WPF que necesita guardar datos cuando se cierra. Los eventos de cierre de ventana/cerrado funcionan bien si el usuario cierra el programa, pero no reciben una llamada si el usuario cierra la sesión/apaga la computadora.Evento de cierre de ventanas de captura en una aplicación wpf

He encontrado formas de atrapar este evento en los programas de winforms (here y here). pero no puedo entender cómo lograr esto en una aplicación WPF.

Estoy tratando de detener el cierre hasta que mi programa está listo para salir

Respuesta

14

hay un evento integrado Application.SessionEnding - Este evento se activa cuando el usuario cierra la sesión o se apaga el ordenador ... sólo necesita suscribirse a eso y poner su código para guardar la fecha, etc. allí ...

+0

Eso detendrá completamente el apagado del equipo, estoy tratando de detener el apagado hasta que mi programa esté listo para salir. Lo siento, debería haber especificado eso en el OP. – zaza

+0

Realmente no entiendo ... este evento en sí no hace nada ... si su código tarda mucho en responder, Windows le preguntará al usuario si quiere matar a su aplicación que realmente no puede evitar ... su aplicación debe ser rápido al manejar este evento ... podrías intentar decirle a Windows que no se apague (configurando 'e.Cancel = true;' en el controlador de eventos) ... – Yahia

+0

ops sry, fue un malentendido de mi parte. Pensé que tenía que cancelar el evento SessionEndingCancelEventArgs antes de poder llamar eventos en mi aplicación. tu solución funciona perfectamente – zaza

Cuestiones relacionadas