Как перехватить событие завершения процесса консольного приложения? - PullRequest
0 голосов
/ 12 октября 2018

Я буду использовать события процесса, чтобы подключить метод, который будет печатать что-либо при выходе из консоли.Вы можете видеть, что, поскольку я не знаю, какое событие подключить, я использовал три, которые звучат так, как будто они будут работать.

Чтобы проверить это, используйте код ниже.Окно консоли будет оставаться открытым в течение 5 секунд.Нажмите «х» в правом верхнем углу, чтобы закрыть окно до 5 секунд.Ожидается, что будет вызван метод CurrentDomain_ProcessExit.Это не называется.Как правильно сделать это с помощью управляемого кода .net?Я бы предпочел не использовать p / invoke и т. Д.

public static void Main(string[] args)
{
    var currentProcess = Process.GetCurrentProcess();
    currentProcess.Exited += CurrentDomain_ProcessExit;
    AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;
    AppDomain.CurrentDomain.DomainUnload += CurrentDomain_ProcessExit;

    Thread.Sleep(5000);
}

internal static void CurrentDomain_ProcessExit(object sender, EventArgs e)
{
    Console.WriteLine("we just captured the process exit."); // <-- this is never reached.
}
...