Событие выключения для консольного приложения C #

Как я могу узнать, когда мое консольное приложение C # остановится? Есть какое-нибудь событие или что-то подобное?

Спасибо!


person Robert    schedule 02.07.2012    source источник
comment
Вы хотите, чтобы код выходил из приложения?   -  person Nikhil Agrawal    schedule 02.07.2012
comment
[этот вопрос аналогичен вашему] [1] [1]: stackoverflow.com/questions/1119841/   -  person greijner    schedule 02.07.2012


Ответы (2)


Используйте событие ProcessExit домена приложения

   class Program
    {
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);           


        }

        static void CurrentDomain_ProcessExit(object sender, EventArgs e)
        {
            Console.WriteLine("exit");
        }
    }
person Habib    schedule 02.07.2012
comment
Следует отметить, что вашему коду в CurrentDomain_ProcessExit будет дано всего несколько секунд для выполнения, прежде чем приложение все равно завершится. - person rory.ap; 24.08.2017
comment
Это не поможет при выходе пользователя из системы или перезагрузке системы. См. здесь. Поскольку консольные приложения не вызывают событие SessionEnding, добавьте скрытое окно, чтобы их перехватить. Скрытое окно может быть унаследовано от System.Windows.Forms.Form и должно запускаться в отдельном потоке с Application.Run (myHiddenForm). В событии загрузки формы добавьте обработчик событий в SystemEvents.SessionEnding, который должен корректно остановить ваше приложение. - person huha; 17.04.2020

Обработка события System.Console.CancelKeyPress может вам помочь.

MSDN объясняет, как обрабатывать это событие вместе с другими вещи, о которых вам нужно позаботиться при обработке этого события, отрывок:

Это событие используется вместе с System.ConsoleCancelEventHandler и System.ConsoleCancelEventArgs. Событие CancelKeyPress позволяет консольному приложению перехватить сигнал CTRL + C, чтобы приложение могло решить, продолжить выполнение или завершить работу.

Используйте это событие, чтобы явно управлять тем, как ваше приложение реагирует на сигнал CTRL + C. Если у вашего приложения простые требования, вы можете использовать свойство TreatControlCAsInput вместо этого события.

Обработчик этого события выполняется в потоке пула потоков.

person VSS    schedule 02.07.2012