如何知道应用程序正在关闭

3

有一个WPF应用程序。

我希望在应用程序关闭时记录日志。

但是我不能修改应用程序(由于业务原因,有一些限制)。

因此,我创建了一个不可见的窗体组件,它存在于现有应用程序中,作为dll库添加,因此无需修改现有应用程序。

但问题是,我的不可见组件如何知道应用程序正在关闭?

是否有一些函数或事件处理程序可以使用?

解决方案:

有一些事件可以做到这一点,

UnLoaded Closing Closed

这三个事件将在主窗口即将关闭时触发。

问题解决了。

3个回答

4

System.Windows.Window类有一个虚拟的OnClosing(CancelEventArgs)方法,可以重写此方法,还有一个可以处理的Closing事件。

我通常会捕获这些事件并将信息传递给Page类,但遗憾的是,Page类中不包含这样的方法或事件。

每个窗口在关闭时都会触发这些方法,因此不需要在父级和子级窗口之间连接任何消息。而且,我相信任务管理器会首先尝试正常关闭应用程序,这将导致关闭事件被触发,除非其他事情阻止了它,比如对话框。只有在尝试了这个后,TM才会询问是否要执行异常结束应用程序的操作,这显然会绕过关闭事件。


0
你有检查过FormClosing事件吗?

0

我还没有掌握WPF的知识,但我知道从winforms开始,有一个来自Form类的事件Closing,您可以捕获并呈现对话框“此应用程序正在退出,您是否要继续等”,并将Cancel标志设置为true以中止关闭窗体,还有来自Application类的ApplicationExit事件,如果您想处理应用程序的关闭,可以捕获该事件。

希望这可以帮助到您, 最好的问候, 汤姆。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接