繁体   English   中英

在没有Windows错误报告的情况下终止应用程序进程

[英]Kill Application Process Without Windows Error Reporting

有什么办法可以完全杀死当前进程并跳过Windows错误报告? 甚至是一种以更友好的方式处理全局错误的方法,以便不会将异常传递给OS?

我可以在本地处理尽可能多的错误,但是我还有一个全局错误处理程序,它将向我发送一封包含错误详细信息的电子邮件。 这是我自定义的错误报告。

我有一个为公司创建的WPF C#应用程序。 只有少数人使用它。

我试图找到一种方法来发出一条更友好的消息,该消息指出已引发错误,应用程序必须关闭,发送电子邮件,然后关闭应用程序。 但是,无论我做什么,该应用程序仍然会冻结,并尝试将错误报告给Microsoft。

有时可以,有时不能。

首先,您必须检查导致事件查看器崩溃的异常,并查看是否可以处理此类异常。 App.DispatcherUnhandledException和AppDomain.UnhandledException事件处理程序可以处理许多异常。

但是,用户无法捕获某些异常,例如ExecutionEngineException。 在这些情况下,您无法防止崩溃并妥善处理。

您将必须在ApplicationAppDomain级别添加gloabl异常处理Application

应用程序级别处理程序:

Application.Current.DispatcherUnhandledException += OnDispatcherUnhandledException;

void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs eventArgs)
{
        // exception handling goes here
}

AppDomain级别处理程序:

AppDomain.CurrentDomain.UnhandledException += OnAppDomainUnhandledException;

void OnAppDomainUnhandledException(object sender, UnhandledExceptionEventArgs eventArgs)
{

}

但是,很少有无法处理的异常类型(如StackOverflowException)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM