有一个WPF应用程序。
我希望在应用程序关闭时记录日志。
但是我不能修改应用程序(由于业务原因,有一些限制)。
因此,我创建了一个不可见的窗体组件,它存在于现有应用程序中,作为dll库添加,因此无需修改现有应用程序。
但问题是,我的不可见组件如何知道应用程序正在关闭?
是否有一些函数或事件处理程序可以使用?
解决方案:
有一些事件可以做到这一点,
UnLoaded Closing Closed
这三个事件将在主窗口即将关闭时触发。
问题解决了。
System.Windows.Window
类有一个虚拟的OnClosing(CancelEventArgs)
方法,可以重写此方法,还有一个可以处理的Closing
事件。
我通常会捕获这些事件并将信息传递给Page
类,但遗憾的是,Page
类中不包含这样的方法或事件。
每个窗口在关闭时都会触发这些方法,因此不需要在父级和子级窗口之间连接任何消息。而且,我相信任务管理器会首先尝试正常关闭应用程序,这将导致关闭事件被触发,除非其他事情阻止了它,比如对话框。只有在尝试了这个后,TM才会询问是否要执行异常结束应用程序的操作,这显然会绕过关闭事件。
我还没有掌握WPF的知识,但我知道从winforms开始,有一个来自Form
类的事件Closing
,您可以捕获并呈现对话框“此应用程序正在退出,您是否要继续等”,并将Cancel
标志设置为true以中止关闭窗体,还有来自Application
类的ApplicationExit
事件,如果您想处理应用程序的关闭,可以捕获该事件。
希望这可以帮助到您, 最好的问候, 汤姆。