将两个不同的异常处理程序附加到程序中?
Attaching two different Exception Handlers to program?
在我的应用程序中,我使用了免费的 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。
在我的应用程序中,我使用了免费的 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。