gpt4 book ai didi

c# - 将两个不同的异常处理程序附加到程序中?

转载 作者:行者123 更新时间:2023-11-29 02:20:27 25 4
gpt4 key购买 nike

在我的应用程序中,我使用免费的 NBug 崩溃报告库。为了将它集成到您​​的项目中,您需要在 Program.cs 中添加这两行:

AppDomain.CurrentDomain.UnhandledException += NBug.Handler.UnhandledException;
Application.ThreadException += NBug.Handler.ThreadException;

但是,我需要在我的程序崩溃的情况下运行一段代码。此代码需要清理 mysql 数据库中的一些条目。我想在 NBug 之后简单地添加额外的事件句柄:

AppDomain.CurrentDomain.UnhandledException += NBug.Handler.UnhandledException;
Application.ThreadException += NBug.Handler.ThreadException;
Application.ThreadException += new ThreadExceptionEventHandler(mysqlcleanup);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(mysqlcleanup1);

但是在这种情况下,程序只执行 mysql 清理事件,而忽略 NBug 事件。甚至可以有多个异常处理程序吗?我想过编辑 NBug 源代码来运行 mysql 命令,但这意味着将 mysql 库附加到那个不太理想的项目。

非常欢迎任何想法。

最佳答案

您可以尝试仅将 AppDomain 异常挂接到您的事件处理程序。然后创建 2 个您自己的异常事件,与 Appdomain 的签名相同。将 NBug 挂接到您自己的事件。在你的事件处理程序中,执行你的 mysql 清理,然后引发你自己的事件,这些事件应该通知 NBug。不知道此解决方法是否有效...

我只说明一个事件:

创建以下事件:

public event UnhandledExceptionEventHandler OnUnhandledException;

从 Appdomain 异常中删除 NBug 分配,只保留您自己的分配。在那里,您将 NBug 方法分配给您的新事件,如下所示:

OnUnhandledException += Nbug..... 

就像您将其分配给 Appdomains 事件一样。然后在你清理 mysql 的方法中实现:

OnUnhandledException(sender, unhandledExceptionEventArgs);

希望这对您有所帮助。请注意,最好在调用之前先检查您的事件是否已分配:

if (OnUnhandledException != null)
OnUnhandledException(sender, unhandledExceptionEventArgs);

但在您的情况下,您知道它已分配给 NBug。

关于c# - 将两个不同的异常处理程序附加到程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32781529/

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