2009-11-05 8 views
6

In C++ c'è una funzione denominata atexit in cui è possibile registrare le funzioni che devono essere eseguite quando il sistema esce. Ci sono eventi simili in C#?atexit, exit delegate in C#

UPDATE: AppDomain.ProcessExit non sembra catturare Ctrl-C o Ctrl-Break. Qualcuno sa qualcosa a riguardo?

risposta

10

È possibile controllare gli eventi ProcessExit e DomainUnload della classe AppDomain.

+0

non sembra catturare Ctrl-C però. Ne sai qualcosa? –

+1

@Mats: CTRL + C sembra chiudere il processo in qualche modo che non aumenterà questi eventi. Quella particolare combinazione di tasti tuttavia solleva l'evento Console.CancelKeyPress. Quindi una combinazione di AppDomain.ProcessExit e Console.CancelKeyPress dovrebbe coprire la maggior parte degli scenari di uscita, penso. –

0

Se si sta eseguendo un WinForms applicazione è possibile aggiungere un listener per l'evento Application.ApplicationExit

1

C'è l'evento Application.ApplicationExit se hai un'applicazione WinForms. Per WPF c'è Application.Exit.

+0

So come chiudere le applicazioni, sono interessato a come allegare eventi quando ciò accade. Grazie comunque. –

+0

Mi dispiace, quello riguardante l'app della console era sbagliato (l'ho modificato). I due riferimenti rimanenti sono eventi che si verificano quando si esce dall'app (WinForm/WPF). – andyp

+0

Freddo. Sfortunatamente ne ho bisogno in modalità console .. Probabilmente avrei dovuto dirlo. –

1

Forse le risposte a questo possono aiutare:

+0

Quindi probabilmente è necessario rilevare entrambi gli eventi, ProcessExit e ConsoleCancelEventHandler. Sarebbe bello con un solo evento che viene sempre chiamato. Bene, bene .. –

+0

Potrebbe essere. Ma questo non dovrebbe essere un grosso problema, devi solo fare tutto ciò che devi fare in un metodo separato chiamato da entrambi eventhandler o qualcosa del genere :) – Svish