【发布时间】:2015-10-20 10:25:04
【问题描述】:
我得到了 MDI 应用程序并且有一些 OnFormClosing 事件在 End 应用程序之前做一些工作 - 这些行:
Projekt.UnlockAllLockedProjects()
End 'completly close app
在整个代码下面:
Protected Overrides Sub OnFormClosing(e As FormClosingEventArgs)
MyBase.OnFormClosing(e)
If e.CloseReason = CloseReason.WindowsShutDown Then
Return
End If
Dim dr As DialogResult
Select Case Lang.name
Case Lang.LangShortcut.PL
dr = MessageBox.Show(Me, "Kontynuować zamykanie okna?", MsgLevel.QUESTION.ToString, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
Case Lang.LangShortcut.EN
dr = MessageBox.Show(Me, "Are you sure you want to quit?", MsgLevel.ZAPYTANIE.ToString, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
Case Else
End Select
' Confirm user wants to close
Select Case dr
Case DialogResult.No
e.Cancel = True
Exit Select
Case Else
Projekt.UnlockAllLockedProjects()
End 'completly close app
End Select
End Sub
问题是,让我们假设会有应用程序错误,因此应用程序将崩溃或手动我在代码End 子句中的其他位置。如何确保Projekt.UnlockAllLockedProjects() 始终在应用退出之前执行。有什么地方可以放它并确定吗?
【问题讨论】:
-
程序的入口点是什么?是 MDI 形式,
Sub Main还是任何其他形式。此外,此 MDI 表单是否始终是应用程序的最后一个表单,即是否存在多个 MDI 表单或任何其他非 MDI 子表单,即使在此 MDI 关闭后也可能处于活动状态? -
当用户输入凭据时,第一个表单是登录表单,如果它们正确,我将显示新表单,即 mdi 容器并隐藏登录表单
-
永远不要使用
End。没有理由做任何事情来结束应用程序,因为它会结束除非你取消。如果该表单是最后一个要关闭的表单(这就是您显然配置应用程序的方式)并且其他地方没有一些未处理的异常,那通常应该可以工作 -
好的,但是有没有机会/任何地方发生意外错误,我可以放置我的代码以确保它会在之前执行?
标签: vb.net winforms mdi formclosing