【发布时间】:2022-03-11 03:40:08
【问题描述】:
在运行我的应用程序时,我在 Visual Studio 的输出面板中发现了下面的异常日志。
System.Windows.Forms.dll 中发生了“System.InvalidOperationException”类型的第一次机会异常
这个应用的架构师如下。
- 第二个线程:将“将项目添加到列表视图”或“将项目更改为列表视图”命令排入队列。
- 主线程:从队列中出列并执行每个命令定义的添加或更改操作。
我想知道调用 InvalidOperationException 的详细信息, 但它只显示在输出面板上,所以我无法捕捉到它来查看堆栈跟踪。 有办法知道吗?
【问题讨论】:
-
将整个应用程序包装在
try/catch?在调试器中运行它并设置为在每个异常时中断? -
在整个 Program.Main 中设置 try/catch,但无法捕获 InvalidOperationException。
-
转到
Debug -> Exceptions...并勾选Common language Runtime Exceptions旁边的Thrown选项。 -
谢谢!!!我做了异常设置,我得到了异常的详细信息!更改异常设置后显示的 Visual Studio 对话框获取详细信息。我仍然无法捕捉到异常,但我的目标已经达到。
-
我猜你忘了用锁保护队列。需要防止工作线程在主线程迭代队列时修改队列。不要随便捕获异常,这只会使您的代码以无法诊断的方式失败。