.NET进一步研究NotMarshalable MDA错误

时间:2014-05-31 21:08:38

标签: c# vb.net marshalling

我的VB.NET应用程序中出现“NotMarshalable识别”错误:

"A COM component which can not be marshaled is being using from a differrent apartement / context than the other it entered the CLR from. Because it can not be marshaled, it is correctly directly by the current apartement / context. This may lead to data loss."

IDE停在此行并提供“获取有关MDA的更多信息”(这会将我带到一个解释MDA的网站)。我已阅读了该网站,但我没有找到任何可以帮助我解释哪个COM组件导致此错误的信息。

我无法阅读汇编程序,但我想我拥有的一切,对吧? - >

enter image description here

有人可以告诉我如何跟踪哪个COM组件导致此错误,为什么?我的大型项目中有大约20个COM对象,我无法在.NET中快速重写所有这些对象。

谢谢!

1 个答案:

答案 0 :(得分:2)

这是我想要做的:

  1. 设置visual studio以阻止任何异常
  2. 检查异常发生时正在执行的代码
  3. 检查异常发生时堆栈的外观。
  4. 使用一些.net decompiler来检查调用COM合作伙伴的.net函数内发生的事情
  5. 检查函数的参数(通过查看VS中的堆栈)以尝试了解哪个是COM组件
  6. google找到的任何信息