C# 控制台应用程序C的关闭事件#
我如何知道我的C#控制台应用程序何时停止?有什么类似的活动吗 谢谢 使用应用程序域的事件C# 控制台应用程序C的关闭事件#,c#,events,.net-4.0,event-handling,console-application,C#,Events,.net 4.0,Event Handling,Console Application,我如何知道我的C#控制台应用程序何时停止?有什么类似的活动吗 谢谢 使用应用程序域的事件 class Program { static void Main(string[] args) { AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit); } stat
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
}
static void CurrentDomain_ProcessExit(object sender, EventArgs e)
{
Console.WriteLine("exit");
}
}
处理事件
System.Console.CancelKeyPress
可能会对您有所帮助
它介绍了如何处理此事件以及处理此事件时需要注意的其他事项,摘录:
此事件与一起使用
System.ConsoleCancelEventHandler和System.ConsoleCancelEventArgs。
CancelKeyPress事件使控制台应用程序能够拦截
CTRL+C信号,以便应用程序可以决定是否继续
执行或终止
使用此事件可显式控制应用程序响应的方式
CTRL+C信号。如果您的应用程序有简单的需求,您可以
可以使用TreatControlCAsInput属性而不是此事件
此事件的事件处理程序在线程池线程上执行
是否希望代码从应用程序退出?[此问题与您的问题类似][1][1]:请注意,在应用程序终止之前,CurrentDomain_ProcessExit中的代码只会有几秒钟的时间执行。当用户注销或系统重新启动时,这将不起作用。看见由于控制台应用程序不会引发SessionEnding事件,因此添加一个隐藏窗口来捕获它们。隐藏窗口可以从System.Windows.Forms.Form继承,并且应该使用Application.Run(myHiddenForm)在单独的线程中启动。在表单的load事件中,将事件处理程序添加到SystemEvents.SessionEnding,这将正常停止应用程序。