在没有 Dispose 事件处理程序的情况下处理应用程序关闭事件
Handle Application closing event without Dispose event handler
我想知道在 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 文档。此解决方案的棘手部分是传递其他应用程序关闭文档所需的信息。
我想知道在 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 文档。此解决方案的棘手部分是传递其他应用程序关闭文档所需的信息。