有时,当我在调试程序时使用Form.close()时,虽然表单已关闭,但应用程序仍在运行。我在使用msgbox函数时注意到了这种行为。
我没有线程也没有运行计时器,那么关闭.NET应用程序的最佳方法是什么?我正在使用VB.NET。
由于
答案 0 :(得分:21)
你描述的情况很可疑。每当您关闭程序的启动表单时,整个应用程序都应自动退出,包括关闭所有其他打开表单。确保您关闭了正确的表格,并且不应该遇到任何问题。
另一种可能性是您已经更改了项目(使用其“属性”页面),直到所有打开的窗口关闭后才关闭。在此模式下,在最后剩余打开表单关闭之前,您的应用程序不会退出。如果您选择了此设置,则必须确保调用在应用过程中显示的所有表单的Close
方法,而不仅仅是启动/主要形式。
第一个设置是原因的默认设置,如果您更改了它,您可能想要修复它。
它是迄今为止正常应用程序最直观的模型,它可以完全防止您描述的情况。要使其正常工作,请确保已将主表单指定为“启动表单”(而不是启动屏幕或登录表单)。
我正在谈论的设置在这里突出显示:
但主要是,请注意您永远不必在正确设计的应用程序中调用Application.Exit
。如果你发现自己必须这样做才能使你的程序完全关闭,那么你做错了什么。只要你有充分的理由,这样做本身并不是一个坏习惯。另外两个答案无法解释这一点,因此我认为最多也是不完整的。
答案 1 :(得分:9)
在.Net 1.1及更早版本中,Application.Exit was not a wise选项和MSDN文档专门针对它进行了推荐,因为所有邮件处理都立即停止。
在更高版本中,calling Application.Exit将导致在应用程序中的所有打开表单上调用Form.Close,从而使您有机会自行清理,甚至一起取消操作。
答案 2 :(得分:3)
如果您处于循环中(Do While,For,...)并且您调用Me.Close()
,则应该使用Exit命令(Exit Do,...)或Return()
强制消息处理正常终止。由于这个原因我抓住了程序。
答案 3 :(得分:0)
Form.Close()用于在.NET应用程序中关闭Form的实例,它不会终止整个应用程序。 Application.exit()会杀死你的应用程序。
答案 4 :(得分:-1)
Application.Exit()
会终止您的应用程序,但有些情况下它不会关闭应用程序。
End
优于Application.Exit()
。
答案 5 :(得分:-2)
刚刚结束"结束"代码中的关键字。
Sub Form_Load()
Dim answer As MsgBoxResult
answer = MsgBox("Do you want to quit now?", MsgBoxStyle.YesNo)
If answer = MsgBoxResult.Yes Then
MsgBox("Terminating program")
End
End If
End Sub