我得到的TargetInvocationExceptions就像
System.Reflection.TargetInvocationException类型的未处理异常发生在mscorlib.dll中 附加信息:调用的目标引发了异常。
因为我调用代码时
Dispatcher.Invoke(MyRoutine...)如何使VS 2010调试器进入MyRoutine到实际发生异常的地方?
我知道我可以围绕try...catch构建一个Dispatcher.Invoke,然后查看内部异常,但这是相当困难的。我要调试器在bug发生的地方停止。
有什么办法吗?
发布于 2013-04-29 16:19:22
Dispatcher.Invoke()将设置一个catch块,以便它可以将任何异常封送回调用它的线程。以便调用方知道调用()返回值不可用。此catch块防止调试器在引发异常时自动中断。原始异常作为TargetInvocationException对象的TargetInvocationException传递。这可能足以诊断原因。
请考虑使用BeginInvoke()代替,因为调用它的代码不再是活动的,所以它不需要执行这种封送处理。它也不太容易陷入僵局。
但是,如果您确实需要返回值,那么只有Invoke()才能提供它。那么,调试异常的方法是使用debug +异常并勾选CLR异常的抛出复选框。它强制调试器在抛出异常时停止。
https://stackoverflow.com/questions/16279829
复制相似问题