基于图片框在用户控件中引发异常,导致它显示典型的错误图像(红色X)。由于GUI线程本身捕获并处理了异常,所以我无法轻松找出发生异常的位置并进行调试。我正在包装整个OnPaint代码在try-catch中,并且能够调试代码,但是我发现它非常乏味,所以我想知道是否有一种方法可以从GUI线程异常入侵调试器。如何在GUI线程中捕获异常?
0
A
回答
2
默认情况下,它已经以这种方式工作。 UI线程异常处理方法由Application.SetUnhandledExceptionMode()控制。缺省值是UnhandledExceptionMode.CatchException,以便引发ThreadException事件,并且默认情况下会创建一个ThreadExceptionDialog。
但是,如果连接了调试器,则会覆盖此模式。因此,如果没有活动的catch子句,则总是会处理异常。这样调试器就会停止,让您能够诊断问题。通过编写自己的try/catch,可以防止这种情况发生。
请小心OnPaint()可以是特别的,特别是对于PictureBox。它有一个try/catch子句,捕捉未处理的异常并绘制红色十字。这有点不寻常,但是必须的,因为它支持ImageLocation属性。这可以让它显示来自潜在不可靠网络源的图像。在这种情况下,排除异常的最佳方法是使用Debug + Exceptions,勾选Thrown复选框。这会强制调试器始终停止发生异常,即使它不是未处理的。
+0
我觉得奇怪的是,它没有区分失败的图像加载和OnPaint中抛出的异常。 – mafu 2010-09-22 16:27:18
相关问题
- 1. 在不同线程中捕获异常
- 2. 在GUI代码中捕获SEH异常
- 3. 如何在异常中捕获异常?
- 4. C#等待关于GUI线程和捕获异常WPF
- 5. 如何捕捉线程中的异常
- 6. 在.NET线程捕获异常
- 7. 从pyqt4 gui中捕获一个异常
- 8. 未捕获的异常如何在线程中表现?
- 9. 如果在辅助线程中发生异常,如何在主线程中捕获异常?
- 10. 从所有线程捕获异常?
- 11. 无法捕获TimerTask线程异常
- 12. 从另一个线程捕获异常
- 13. 从其他线程捕获异常?
- 14. 从运行线程捕获异常
- 15. Ruby,捕获库线程异常?
- 16. 捕获未处理的线程异常
- 17. 摆动线程捕获异常
- 18. 如何捕获Java中另一个线程抛出的异常?
- 19. Scala:如何捕获子线程中的异常
- 20. ASP.Net C#4.0 - 如何捕获应用程序线程异常
- 21. 用线程捕捉异常
- 22. 在Display.syncExec过程中捕获传播异常以调用线程
- 23. 如何捕获python线程中发生的异常。线程执行?
- 24. 如何在FutureTask中捕获异常
- 25. 在GNU Octave中,如何捕获异常
- 26. 如何在iOS中捕获异常?
- 27. 如何在PowerShell中捕获异常?
- 28. 如何在Controller中捕获java.lang.NumberFormatException.forInputString异常?
- 29. 如何在实体中捕获异常?
- 30. 如何捕获此异常
WinForms或WPF? – Richard 2010-09-22 15:45:07