如何进入TargetInvocationException



我得到targetinvocationexception

mscorlib.dll中出现System.Reflection.TargetInvocationException类型的未处理异常
对象的目标抛出了异常调用。

因为我用

调用代码
Dispatcher.Invoke(MyRoutine...)

我如何使VS 2010调试器步骤到MyRoutine到异常实际发生的地方?

我知道我可以建立一个尝试…捕获Dispatcher.Invoke周围的异常,然后查看内部异常,但这是相当费力的。我希望调试器在错误发生的地方停止。

你知道怎么做吗?

Dispatcher.Invoke()将设置一个catch块,以便它可以将任何异常封送回调用它的线程。以便调用者知道Invoke()返回值不可用。此捕获块可防止在抛出异常时调试器自动中断。原始异常作为TargetInvocationException对象的InnerException传递。这可能足以诊断出原因。

考虑使用BeginInvoke()代替,它不需要做这种封送处理,因为调用它的代码不再是活动的。它也更不容易发生死锁。

但是如果您真的需要返回值,那么只有Invoke()可以提供它。调试异常的方法是使用debug + Exceptions并勾选抛出的CLR异常复选框。当抛出异常时,强制调试器停止。

相关内容

  • 没有找到相关文章

最新更新