如何捕获任何类型的应用程序出口
本文关键字:应用程序 出口 类型 何捕获 任何 | 更新日期: 2023-09-27 18:04:31
我有一个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)
{}
}
- 是否有一种通用的方法来处理应用程序退出?
例如,当应用程序被强制关闭(杀死)时,上述方法都不会触发。每次应用程序关闭时,我需要解锁数据库中的一些对象,这些对象在应用程序运行期间被用户锁定。
您无法捕获所有类型的存在,除非您正在运行一个观察者,与被调查的应用程序("目标"应用程序)分开。
原因是您不能在内部捕获应用程序崩溃(duh),强制进程终止(内部和外部)或任何类似的效果。
你做得非常好。
如果你想实现一个单独的观察者应用程序,你可以使用。net Process.Exited
事件,当一个进程因为任何原因存在时,它就会被触发,包括应用程序崩溃。
您可以将处理程序附加到AppDomain。ProcessExit事件;据我所知,这是判断应用程序何时退出的最可靠的方法。
如果你将你的应用程序移动到Silverlight,这将不可用,但只要你留在WPF(或任何其他"全尺寸"的。net框架应用程序),这应该是可行的。