【问题标题】:atexit, exit delegate in c#atexit,在 c# 中退出委托
【发布时间】:2010-12-13 09:16:15
【问题描述】:

在 c++ 中有一个名为 atexit 的函数,您可以在其中注册应在系统退出时运行的函数。 C#中有没有类似的事件?

更新: AppDomain.ProcessExit 似乎没有捕捉到 Ctrl-C 或 Ctrl-Break。有人知道吗?

【问题讨论】:

    标签: c# exit


    【解决方案1】:

    您可以查看AppDomain 类的ProcessExitDomainUnload 事件。

    【讨论】:

    • 似乎没有抓住 Ctrl-C。对此有什么了解吗?
    • @Mats:CTRL+C 似乎以某种不会引发这些事件的方式关闭进程。但是,该特定组合键确实会引发 Console.CancelKeyPress 事件。因此,我认为 AppDomain.ProcessExit 和 Console.CancelKeyPress 的组合应该涵盖大多数退出场景。
    【解决方案2】:

    如果您正在运行 WinForms 应用程序,您可以将侦听器添加到 Application.ApplicationExit 事件

    【讨论】:

      【解决方案3】:

      如果您有 WinForms 应用程序,则有 Application.ApplicationExit 事件。对于 WPF,有 Application.Exit

      【讨论】:

      • 我知道如何关闭应用程序,我对如何在发生这种情况时附加事件感兴趣。无论如何,谢谢。
      • 对不起,关于控制台应用程序的那个是错误的(我编辑了那个)。剩下的两个引用是您退出应用程序 (WinForm/WPF) 时发生的事件。
      • 酷。不幸的是,我需要在控制台模式下使用它。可能应该提到这一点。
      【解决方案4】:

      也许这个问题的答案可以帮助你:

      【讨论】:

      • 那么可能需要同时捕获两个事件,ProcessExit 和 ConsoleCancelEventHandler。只有一个总是被调用的事件会很整洁。好吧,好吧..
      • 可能是。但这应该不是什么大问题,只需在一个由两个事件处理程序或其他东西调用的单独方法中做你需要做的任何事情:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 2019-10-07
      相关资源
      最近更新 更多