2009-11-05 15 views
6

W języku C++ dostępna jest funkcja o nazwie atexit, w której można rejestrować funkcje, które powinny być uruchamiane po wyjściu systemu. Czy są jakieś podobne zdarzenia w C#?atexit, delegat wyjścia w C#

AKTUALIZACJA: AppDomain.ProcessExit nie wydaje się przechwytywać Ctrl-C lub Ctrl-Break. Ktoś wie coś o tym?

Odpowiedz

10

Można sprawdzić zdarzenia ProcessExit i DomainUnload klasy AppDomain.

+0

nie wydaje się złapać Ctrl-C, choć. Wiesz coś o tym? –

+1

@Mats: CTRL + C wydaje się zamknąć proces w pewien sposób, który nie podniesie tych zdarzeń. Ta konkretna kombinacja klawiszy podnosi jednak wydarzenie Console.CancelKeyPress. Tak więc, wydaje mi się, że kombinacja AppDomain.ProcessExit i Console.CancelKeyPress powinna obejmować większość scenariuszy wyjścia. –

0

Jeśli używasz do WinForm app można dodać detektor zdarzenia

1

Jest zdarzenie Application.ApplicationExit jeśli masz aplikacji WinForm Application.ApplicationExit. Dla WPF jest Application.Exit.

+0

Wiem, jak zamknąć aplikacje, jestem zainteresowany tym, jak dołączyć zdarzenia do tego, kiedy to się stanie. Dzięki i tak. –

+0

Niestety, ten dotyczący aplikacji konsolowej był nieprawidłowy (ja to zredagowałem). Dwa pozostałe odniesienia to zdarzenia występujące po zamknięciu aplikacji (WinForm/WPF). – andyp

+0

Cool. Niestety potrzebuję go w trybie konsoli. Prawdopodobnie powinienem to wspomnieć. –

1

Być może odpowiedzi na to może pomóc:

+0

Prawdopodobnie więc trzeba złapać oba zdarzenia, ProcessExit i ConsoleCancelEventHandler. Byłby zgrabny z jednym wydarzeniem, które zawsze jest wywoływane. No cóż .. –

+0

Może być. Ale to nie powinno stanowić większego problemu, po prostu rób to, co musisz zrobić w osobnej metodzie, która jest wywoływana przez oba eventhandlery lub coś takiego :) – Svish

Powiązane problemy