2010-02-22 56 views
3

在我们的应用程序中,我们有一个相当广泛的异常处理机制。在我们的错误处理逻辑中的某个时刻,我们想要终止应用程序 - 此时无需执行进一步的代码。如何立即退出Windows Forms .NET应用程序?

我们当前的代码使用Environment.Exit()来做到这一点。在调用Environment.Exit()之后,仍然执行一些代码。例如,GC可能会执行一些对象的终结器(在我们的例子中会导致问题)。我们不希望这种情况发生。有没有一种方法可以真正杀死我们自己的流程(也许是Win32 API调用)?

当然,我们不希望最终用户看到当一个程序崩溃时出现的Windows对话框......

+0

既然你提到GC,我认为这是.Net。您可能需要将.Net和/或C#添加到标签。 – MusiGenesis

+0

@musigenesis:确实是.net。固定... – Sylvain

回答

1

这出现在一个简单的应用程序的工作,但我还没有与任何复杂试了一下:

System.Diagnostics.Process.GetCurrentProcess().Kill(); 

GetCurrentProcess

获取新Process组件和 将其与当前的 活动进程关联ESS。

Kill

Kill强制 过程的结束,而仅仅CloseMainWindow请求 终止。

+0

我会在我们的上下文中尝试。我会回来的结果... – Sylvain

+0

@R。 Bemrose:我确认这也适用于我的应用程序。谢谢。 – Sylvain

5

使用Environment.FailFast方法:

终止一个进程,但确实不执行任何活动的尝试终止块或终结器。

3
+0

+1我喜欢这个名字。 –

+0

@Greg - 但很奇怪。我认为他们会把它称为ExitFast()而不是......但为什么要狡辩呢? – Nick

+0

文档说FailFast写入事件日志并创建应用程序的转储!这是很多副作用。我不认为我能够使用它。 – Sylvain