在我的应用程序中,我使用的是免费的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库附加到该项目上,这并不理想。
任何想法都很受欢迎。
发布于 2015-09-25 12:33:36
您只可以尝试将AppDomain异常连接到事件处理程序。然后创建2个您自己的异常事件,与Appdomain的.挂钩NBug到您自己的事件相同的签名。在事件处理程序中,执行mysql清理,然后引发您自己的事件,这些事件应该通知NBug。不知道这个解决办法是否有效..。
我只想举例说明一个事件:
创建以下事件:
public event UnhandledExceptionEventHandler OnUnhandledException;从应用程序域异常中删除NBug分配,只保留您自己分配的。在这里,您将NBug方法分配给新事件,如下所示:
OnUnhandledException += Nbug..... 就像你把它分配给Appdomains事件一样。然后在清理mysql的方法中实现:
OnUnhandledException(sender, unhandledExceptionEventArgs);希望这能有所帮助。请注意,最好在调用事件之前先检查您的事件是否已被分配:
if (OnUnhandledException != null)
OnUnhandledException(sender, unhandledExceptionEventArgs);但是在您的例子中,您知道它被分配给NBug。
https://stackoverflow.com/questions/32781529
复制相似问题