在代码中关闭当前应用程序(立即终止)。[英] Close current application in code (terminate it immediatly)

问题描述

我的代码"Application.Exit()"不会终止程序.有没有其他方法可以立即终止程序?此代码位于一个对象中,该对象可能在应用程序的主窗体之前创建.这个对象会进行资源检查和激活检查.

推荐答案

digimanus 的解决方案有效,但需要解释,引用的文章很糟糕.

System.Windows.Forms.Application 的退出方法实际上与终止应用程序正在运行的进程无关.它们只会导致方法 Application.Run 返回.

方法 Application.Exit 退出应用程序但完成消息泵送,因此 Application.Run 不会立即返回.Application.ExitThread 方法从循环中返回;所以它会在当前消息被调度并且执行返回到循环时立即发生.

这些方法只影响一个线程,即 UI 线程.因此,如果有另一个线程继续执行,则该进程不会终止.这是在"正常"Application.Exit 之后执行进程的最典型原因.System.Environment.Exit 方法仍然有效.但是,我不会推荐它.线程应该正确终止或正确中止,因为中止线程中的一些后处理可能很重要.System.Environment.Exit 是一种粗心的方式.准确退出的最佳方式是关闭主窗体并进行所有后处理,包括在其 FormClosed 事件中触发的线程终止.

请看:
http://msdn.microsoft.com/en-us/library/system.windows.forms.application.aspx[^],
http://msdn.microsoft.com/en-us/library/system.environment.exit.aspx[^].

—SA

使用 Environment.Exit 见此处:http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx[^]

试试Application.ExitThread函数.

本文地址:https://www.itbaoku.cn/post/1395066.html