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

我如何知道我的C#控制台应用程序何时停止?有什么类似的活动吗

谢谢

使用应用程序域的事件

   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,这将正常停止应用程序。