0
我MDI应用程序,并有其最终应用之前做一些工作有些OnFormClosing事件 - 这些行:执行代码
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后也可能处于活动状态? – haraman
第一种形式是登录表单,当用户输入凭据时,如果他们正确我正在显示新表单,它是mdi容器和隐藏登录表单 – Arie
不要使用'End'。没有理由做任何事情结束应用程序,因为它会结束*除非*您取消。这应该通常工作,如果这种形式是最后关闭的形式(这就是你显然已经配置了应用程序),并没有一些未处理的异常其他地方 – Plutonix