【问题标题】:How would I go about performing an operation on closing a C# console application?我将如何执行关闭 C# 控制台应用程序的操作?
【发布时间】:2009-12-22 17:06:21
【问题描述】:

我想将控制台应用程序中的数据保存为关闭时的最终状态。我已经弄清楚如何使用序列化来保存数据,但不知道如何在应用程序关闭时实现这一点。

一种方法是设置一个非托管处理程序来拦截关闭命令并执行操作,但是一旦调用了事件处理程序,GC() 已经运行并且托管程序不再在内存中。

有什么想法吗?


编辑: 这里的基本问题是我有一个对象在程序的生命周期内监听流。如果程序随后在外部关闭(例如通过按下角落中的 x),则不会执行 Main() 方法中的其他代码,绕过关闭的序列化代码。

【问题讨论】:

  • 终结器是否运行?也许有某种“根”对象是可能的。

标签: c# events console


【解决方案1】:

通常,您只需将此代码放在 Main 例程的末尾 - 这将是控制台应用程序关闭之前运行的最后一件事。

如果您想在托管代码关闭之前的最后一刻处理某些事情,您可以订阅AppDomain.DomainUnload。此事件在 AppDomain 卸载时立即触发。

【讨论】:

    【解决方案2】:

    我将创建一个存储状态的应用程序生命周期类实例,并将序列化代码添加到其析构函数中。

    另一个想法是在您的程序中使用 try{} finally{}。

    【讨论】:

      猜你喜欢
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2012-07-02
      • 2011-04-11
      • 2018-05-22
      相关资源
      最近更新 更多