c# - Winforms:Application.Exit 与 Environment.Exit 与 Form.Close

标签 c# .net windows vb.net winforms

以下是我们可以退出应用程序的方式:

  1. Environment.Exit(0)
  2. Application.Exit()
  3. Form.Close()

这三种方法有什么区别,何时使用每种方法?

最佳答案

正确的方法是 Application.Exit()。根据Documentation , 它会终止所有消息循环并关闭所有窗口,从而使您的表单有可能执行其清理代码(在 Form.OnClose 等中)。

Environment.Exit 只会终止进程。如果某种形式有例如未保存的更改它不会有任何机会询问用户是否要保存它们。此外,资源(数据库连接等)无法正确释放,文件可能无法刷新等。

Form.Close 就像它所说的那样:它关闭一个表单。如果您打开了其他表单(可能不是现在,而是在您的应用程序的某个 future 版本中),应用程序将不会终止。

请记住,如果您使用多线程,Application.Exit() 将不会终止您的线程(因此应用程序将继续在后台工作,即使 GUI 已终止)。因此,您必须采取措施终止线程,无论是在主函数(即 Program.Main())中还是在主窗体的 OnClose 事件中。

关于c# - Winforms:Application.Exit 与 Environment.Exit 与 Form.Close,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13046019/

相关文章:

c# - 如何将浏览器标题设置为 Silverlight 应用程序中的事件用户控件

c# - 如何在 C#/.NET 中创建内存泄漏

c# - 奇怪的 C# 编译器行为(重载解析)

c# - 为什么我们在哈希算法中有一个额外的桶数组?

python - 多处理卡住计算机

c# - 寻找 .NET C# 每日提示组件

c# - 当 ObservableCollection 触发 CollectionChanged 时,ItemsControl 不会自行更新

windows - 如何通过bat文件重新启动Windows时给出原因

c# - 集合和基于集合的操作有哪些优点?

python - 什么是更 Pythonic 的方法来测试我的部分代码?