Как запустить код перед выходом из программы?

У меня есть небольшая консольная программа на C #, например

Class Program 
{ 
    static void main(string args[]) 
    {
    }
}

Теперь я хочу что-то сделать после выхода из main (). Я пытался написать деконструктор для Class Program, но у него ничего не получилось.

Кто-нибудь знает, как это сделать.

Большое спасибо


person Frank    schedule 31.03.2010    source источник


Ответы (1)


Попробуйте событие ProcessExit из AppDomain:

using System;
class Test {
    static void Main(string[] args)
    {
        AppDomain.CurrentDomain.ProcessExit += new EventHandler (OnProcessExit); 
        // Do something here
    }

    static void OnProcessExit (object sender, EventArgs e)
    {
        Console.WriteLine ("I'm out of here");
    }
}
person Gonzalo    schedule 31.03.2010
comment
Мой ответ был неправильным, это лучший подход. - person ace; 31.03.2010
comment
Это наиболее общее решение, но будьте осторожны, так как событие ProcessExit ограничено по времени тремя секундами (как финализаторы, когда приложение завершает работу). msdn.microsoft.com/en-us/library/ - person Adam Robinson; 31.03.2010
comment
Спасибо, работает ... Первый раз, потом перестало работать! :-( - person gatopeich; 13.08.2012
comment
это сработает, даже если пользователь закроет программу? - person NSjonas; 15.11.2012
comment
Вызов AppDomain.ProcessExit не гарантируется http://blogs.msdn.com/b/jmstall/archive/2006/11/26/process-exit-event.aspx - person Barka; 24.02.2013
comment
Конечно, «грубое» уничтожение процесса не даст возможности выполнить ProcessExit. Отсюда и "грубо" :-) - person Gonzalo; 25.02.2013
comment
Нажатие кнопки X в правом верхнем углу окна может «грубо» прервать процесс для всех, кто не знает. - person Miryafa; 01.07.2017
comment
т.е. этот ответ совершенно бесполезен в большом количестве случаев. - person j riv; 14.06.2018
comment
Мирьяфа, это работает, когда мы нажимаем кнопку X в правом верхнем углу приложения. Я использую приложение WPF, и оно работает на меня. Все же, чтобы проверить с помощью консоли. - person Renjith; 22.07.2018
comment
Это также не сработает, если приложение выдает исключение. - person Andrey Belenkiy; 14.01.2020
comment
У меня это не работает в консольном приложении. Я использую .NET 4.7.2 - person im2rnado; 08.07.2021