【问题标题】:What triggers the C# FormClosed event?什么触发了 C# FormClosed 事件?
【发布时间】:2019-11-28 10:20:46
【问题描述】:

我有一个连接到 API 的应用程序。 API 需要在工作完成时调用注销函数,以便其系统正常工作。我有一个连接到这个 API 的函数,做了一些工作,然后注销并且它工作正常。问题是程序崩溃时,或者我需要在工作期间关闭它。 我在 MDI 父窗体的 FormClosing 事件中添加了对注销函数的调用。这适用于所有关闭程序的情况吗?

更具体地说 - 我知道,单击红色 X 按钮将触发此事件。但是从 Windows 的任务管理器中关闭程序也会触发它吗?并且从 Visual Studio 中停止程序(在开发期间,当它也从 Visual Studio 中运行时)也会触发它吗?

【问题讨论】:

  • 或以dispose的形式处理
  • CloseReason
  • 但是当程序崩溃时......这是一个功能吗? :)
  • @RovannLinhalis 一分钟前我刚刚提出了相同的解决方案。是的,有一个会话令牌,我可以在登录时保存它,并在下次应用程序启动时注销。谢谢!

标签: c# winforms events formclosing


【解决方案1】:
  • 当用户关闭程序时触发。
  • 任务管理器关闭程序时触发,但FormClosing中只有部分代码片段会执行,其余部分也会被杀死
  • Visual Studio 停止程序时不会触发。
  • 电脑断电时不会触发。

【讨论】:

  • 看看this page。它解释了所有密切的原因。
  • @preciousbetine 已经提到它作为对该问题的评论
  • 而且由于您似乎已经忽略了它,虽然我赞成评论,但我更愿意将评论放在答案下方。 IMO,一个好的答案应该提到有关关闭原因的链接文档。
  • @RezaAghaei 但此文档没有回答我的问题。
  • 例如:表单正在以编程方式或通过用户界面中的用户操作关闭(例如,通过单击表单窗口上的关闭按钮,从窗口的控制菜单中选择关闭, 或按 ALT+F4)。 → Result: X 按钮, System Menu, Alt+F4, 简而言之:它意味着调用 Close 方法,设置 DialogResult, ...) 或者作为另一个例子:操作系统在关闭前关闭所有应用程序。 → 结果:正确关闭 Windows。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
  • 2014-08-11
相关资源
最近更新 更多