.NET End vs Form.Close()vs Application.Exit关闭一个应用程序的清洁方式

时间:2011-02-12 04:43:04

标签: .net vb.net winforms exit

有时,当我在调试程序时使用Form.close()时,虽然表单已关闭,但应用程序仍在运行。我在使用msgbox函数时注意到了这种行为。

我没有线程也没有运行计时器,那么关闭.NET应用程序的最佳方法是什么?我正在使用VB.NET。

由于

6 个答案:

答案 0 :(得分:21)

你描述的情况很可疑。每当您关闭程序的启动表单时,整个应用程序都应自动退出,包括关闭所有其他打开表单。确保您关闭了正确的表格,并且不应该遇到任何问题。

另一种可能性是您已经更改了项目(使用其“属性”页面),直到所有打开的窗口关闭后才关闭。在此模式下,在最后剩余打开表单关闭之前,您的应用程序不会退出。如果您选择了此设置,则必须确保调用在应用过程中显示的所有表单的Close方法,而不仅仅是启动/主要形式。

第一个设置是原因的默认设置,如果您更改了它,您可能想要修复它。
它是迄今为止正常应用程序最直观的模型,它可以完全防止您描述的情况。要使其正常工作,请确保已将表单指定为“启动表单”(而不是启动屏幕或登录表单)。

我正在谈论的设置在这里突出显示:

Visual Studio Project Properties

但主要是,请注意您永远不必在正确设计的应用程序中调用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