如何捕获控制台应用程序的进程退出事件?

时间:2018-10-11 23:59:15

标签: c# .net console-application

我将使用过程事件来建立一个方法,该方法将在退出控制台时显示一些内容。您可以看到,因为我不知道要连接哪个事件,所以我使用了三个听起来都可以正常工作的事件。

要对此进行测试,请使用下面的代码。控制台窗口将保持打开状态5秒钟。在5秒钟之前,单击右上角的“ x”关闭窗口。预期将调用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.
}

0 个答案:

没有答案