我有一个SCSF应用程序,我尝试使用它来处理大多数异常
Application.ThreadException += new ThreadExceptionEventHandler(new ThreadExceptionHandler().ApplicationThreadException);
事件处理程序:-
public class ThreadExceptionHandler
{
public void ApplicationThreadException(object sender, ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.Message, "An exception occurred:", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}工作正常。我可以捕获这个代码块中的所有应用程序异常。
但问题是,在处理异常之后,代码再次执行并再次执行相同的异常,从而再次生成代码。这种情况会一直发生,直到我收到一条windows消息windows将错误信息发送给microsoft。
有人能帮我指出我可能出错的地方吗?
提前感谢
Vikram
注意:-目前我正在抛出一个按钮事件的新异常(“测试异常”)。我这样做是为了在我的应用程序中提供事件处理。
发布于 2009-12-04 18:59:48
在我用头撞了一下代码之后,我发现问题是由于我的SCSF解决方案有一个winforms Shell,而在这个shell上有WPF用户控件。
当异常是在这些WPF用户控件上生成时(主要是这种情况),它们不会被Application.ThreadException捕获,因为WPF的应用程序类与Winforms的不同。
在WPF应用程序中,需要处理Application.DispacherUnhandledException事件。
只是我的小发现..。
发布于 2009-11-27 20:55:34
你必须设置
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);有关示例代码,请参阅this MSDN page
但请注意,这种包罗万象的异常处理并不能很好地替代逻辑中的异常处理。这是一个很好的备份,但在全局处理程序中做的最好的事情是记录信息并退出。你的应用程序可能处于不安全/未定义的状态。
发布于 2011-08-18 02:25:44
仅仅处理Application.DispatcherUnhandledException就会让你大吃一惊。我使用过具有WPF用户控件的SCSF。通读这篇文章。http://social.msdn.microsoft.com/forums/en-US/wpf/thread/c57cac13-f960-49a1-94b5-a3fd316ac4bc/,我也建议你处理AppDomain.UnhandledException。
https://stackoverflow.com/questions/1808551
复制相似问题