C# - 是否可以捕获从主进程触发的<Process> .Exited事件?

Luk*_*uke 6 c# events process

我正在编写一个C#控制台应用程序,并且正在尝试检查我的主程序的进程何时退出,以便我可以在退出之前进行一些清理,但事件似乎永远不会触发.以下是设置事件处理程序的代码:

Process process = Process.GetCurrentProcess();
CloseConsoleHandler close = new CloseConsoleHandler(test);
process.EnableRaisingEvents = true;
process.Exited += close.CloseHandler; 
//I also tried process.Exited += new EventHandler(close.CloseHandler);
Run Code Online (Sandbox Code Playgroud)

它似乎永远不会激发,不是当程序自然结束时,而不是当我单击关闭按钮时......从不.这甚至可能吗?

SLa*_*aks 8

那不行; 一旦流程结束,您的代码就会消失.

处理AppDomain.ProcessExit活动.


Can*_*ğlu 5

逻辑上讲,流程退出事件应在流程退出后触发,因此无法捕获其自身的退出。

但是还有其他选择,例如在您的类中实现Dispose进行清理,或者由于某些原因您需要Process exited事件,只需监视另一个进程中的进程即可。