gpt4 book ai didi

c# - 应用程序不会在全局捕获的 UnhandledExceptions 上恢复

转载 作者:行者123 更新时间:2023-12-03 08:53:35 28 4
gpt4 key购买 nike

我在全局范围内捕获异常并且它工作正常,除了应用程序在 UnhandledExceptions 上没有恢复的部分。 .

我在 MSDN 上读过,为了允许调度程序异常捕获未处理的非 UI 异常,我需要做以下两件事,但我不知道该怎么做。

  • 将这些异常分派(dispatch)到主 UI 线程。
  • 在主 UI 线程上重新抛出它们而不处理它们以允许 DispatcherUnhandledException待提高。

  • 我的代码:
    public partial class App : Application
    {
    public App()
    {
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    }

    private void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
    {
    MessageBox.Show(e.Exception.Message, "Dispatcher Exception", MessageBoxButton.OK, MessageBoxImage.Warning);
    e.Handled = true;
    }

    void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
    Exception ex = e.ExceptionObject as Exception;
    MessageBox.Show(ex.Message, "Unhandeled Exception Event", MessageBoxButton.OK, MessageBoxImage.Warning);
    }
    }

    最佳答案

    不知道这是否会有所帮助,但要分派(dispatch)到您需要调用 Invoke 的主 UI 线程。

    例如如果您在主窗体上,请使用一些 sudo 代码。

    try
    {
    ... stuff
    }
    catch(Exception ex)
    {
    this.Invoke(()=> throw ex));
    }

    如果你不在主窗体上,那么你需要从发生错误的地方抛出一个事件,并在主窗体上监听一些东西,然后在附加到监听器的方法中执行上述操作。

    关于c# - 应用程序不会在全局捕获的 UnhandledExceptions 上恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34156212/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com