gpt4 book ai didi

c# - 如何捕获任何类型的应用程序退出?

转载 作者:行者123 更新时间:2023-11-30 15:43:09 25 4
gpt4 key购买 nike

我有一个 WPF 应用程序。我已经实现了以下功能,但没有人捕获所有类型的应用程序退出。

public partial class App : Application
{
protected override void OnExit(ExitEventArgs e)
{}

private void Application_Exit(object sender, ExitEventArgs e)
{}

private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{}

private void Application_SessionEnding(object sender, SessionEndingCancelEventArgs e)
{}
}
  • 是否有处理应用程序退出的通用方法?

例如,当应用程序被强制关闭(终止)时,上述方法都不会触发。每次应用程序关闭时,我都需要解锁数据库中一些在应用程序运行期间被用户锁定的对象。

最佳答案

不能捕获所有类型的 exists,除非您正在运行一个观察者,与您正在调查的应用程序(“目标”应用程序)分开。

原因是您无法在内部捕获应用程序崩溃(duh)、强制进程终止(内部和外部)或任何类似的情况。

你做的非常好。

如果您确实希望实现一个单独的观察者应用程序,您可以使用 .NET Process.Exited 事件,只要进程因任何原因(包括应用程序崩溃)而存在,就会触发该事件。

此外,正如@Christian 指出的那样,您不应该 尝试拥有一个包罗万象的解决方案,尤其是在处理关键应用程序崩溃时(这一点是主观的)。 “当您以某种方式设法[从未处理的应用程序错误中恢复]时,您通常做错了什么或者至少可能会得到不准确的结果(例如,当尝试从您自己的进程中 P/Invoke 小型转储创建时)。”

关于c# - 如何捕获任何类型的应用程序退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6953549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com