2009-11-05 10 views
6

En C++ hay una función llamada atexit donde puede registrar funciones que se deben ejecutar cuando el sistema sale. ¿Hay algún evento similar en C#?atexit, delegado de salida en C#

ACTUALIZACIÓN: El AppDomain.ProcessExit no parece capturar Ctrl-C o Ctrl-Break. ¿Alguien sabe algo sobre eso?

Respuesta

10

Puede consultar los eventos ProcessExit y DomainUnload de la clase AppDomain.

+0

no parece coger Ctrl-C embargo. ¿Sabes algo sobre eso? –

+1

@Mats: CTRL + C parece cerrar el proceso de alguna forma que no provocará estos eventos. Sin embargo, esa combinación de teclas particular eleva el evento Console.CancelKeyPress. Así que una combinación de AppDomain.ProcessExit y Console.CancelKeyPress debería cubrir la mayoría de los escenarios de salida, creo. –

0

Si está ejecutando una aplicación WinForms puede añadir un escucha para el evento Application.ApplicationExit

1

Ahí está el caso Application.ApplicationExit si tienes una aplicación de Windows Forms. Para WPF hay Application.Exit.

+0

Sé cómo cerrar aplicaciones, estoy interesado en cómo adjuntar eventos cuando eso sucede. Gracias de todos modos aunque. –

+0

Lo siento, el de la aplicación de la consola era incorrecto (lo edité). Las dos referencias restantes son eventos que ocurren cuando sales de tu aplicación (WinForm/WPF). – andyp

+0

Cool. Desafortunadamente lo necesito en modo consola. Probablemente debería haberlo mencionado. –

1

Tal vez las respuestas a esta pueden ayudar a:

+0

Probablemente necesite atrapar ambos eventos, entonces, ProcessExit y ConsoleCancelEventHandler. Estaría bien con solo un evento que siempre se llama. Bueno, bueno ... –

+0

Podría ser. Pero eso no debería ser un gran problema, solo haz lo que necesites hacer en un método separado que es llamado tanto por eventhandlers como por algo :) – Svish

Cuestiones relacionadas