我将使用过程事件来建立一个方法,该方法将在退出控制台时显示一些内容。您可以看到,因为我不知道要连接哪个事件,所以我使用了三个听起来都可以正常工作的事件。
要对此进行测试,请使用下面的代码。控制台窗口将保持打开状态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.
}