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

本文关键字:情况下 终止 应用程序 进程 报告 Windows 错误 | 更新日期: 2023-09-27 18:19:55

是否有任何方法可以完全终止当前进程并跳过Windows错误报告?或者甚至是一种以更友好的方式处理全局错误的方法,从而使异常不会传递给操作系统?

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

我有一个WPF C#应用程序,我已经为我的公司建立。它只被少数人使用。

我正试图找到一种方法来制作一条更友好的消息,说出现了错误,应用程序必须关闭,发送电子邮件,然后关闭应用程序。但无论我做什么,应用程序仍然会冻结,并试图向微软报告错误。

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

有时可以,有时不能。

首先,您必须从事件查看器中检查是什么异常导致应用程序崩溃,并查看是否可以处理这样的异常。App.DispatcherUnhandledException和AppDomain.UnhandledException事件处理程序可以处理许多异常。

但是,有些异常无法被用户捕获,例如ExecutionEngineException。在这些情况下,您无法防止崩溃并优雅地处理它。

您必须在ApplicationAppDomain级别添加gloable异常处理程序。

应用程序级处理程序:

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)无法处理。