不使用Dispose事件处理程序处理应用程序关闭事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不使用Dispose事件处理程序处理应用程序关闭事件相关的知识,希望对你有一定的参考价值。
我想知道是否有可能在不使用dispose事件处理程序的情况下在Visual Studio 2008中处理关闭应用程序。
如果我的应用程序崩溃或在运行时关闭它:
Private Sub Foo_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
不叫。
这导致了一个严重的问题,因为我正在处理多个Excel文件,它们在应用程序崩溃后保持打开状态,或者在它运行时关闭它。
有没有办法处理这种关闭应用程序事件?
答案
在您的应用程序只是关闭的正常情况下,您可以订阅MyApplication.Shutdown
event并在那里关闭您的Excel文档。
订阅活动可以通过以下步骤完成:
- 在
Solution Explorer
中右键单击您的项目,然后按Properties
。 - 转到
Application
窗格并按View Application Events
。 - 在打开的文件中,要么自己编写事件处理程序,要么让VS通过首先在文本编辑器上方的左侧组合框中选择
(MyApplication Events)
,然后在右侧组合框中选择Shutdown
来执行此操作。
现在你应该有一个类似下面的事件处理程序。继续前进,在那里进行清理:
Private Sub MyApplication_Shutdown(sender As Object, e As System.EventArgs) Handles Me.Shutdown
'Do your cleanup here...
End Sub
对于由CLR异常引起的应用程序崩溃,您可以使用AppDomain.UnhandledException
event,但对于更严重的崩溃,您可以做的不是很多。
解决方法是创建另一个监视主应用程序的应用程序。当其他应用程序检测到您的主应用程序的进程已终止时,它将关闭Excel文档。这个解决方案的棘手部分是传递其他应用程序关闭文档所需的信息。
以上是关于不使用Dispose事件处理程序处理应用程序关闭事件的主要内容,如果未能解决你的问题,请参考以下文章
关闭 Chrome 窗口未在卸载事件处理程序中使用 sendBeacon 发送数据