【问题标题】:Added a new method to a COM object that gets exception when called向 COM 对象添加了一个新方法,该方法在调用时会出现异常
【发布时间】:2012-02-22 23:32:16
【问题描述】:

我有一个方法已添加到我的 COM 类中,每次调用它时都会出现以下异常:

异常:System.Runtime.InteropServices.COMException (0x800706BE):远程过程调用失败。 (来自 HRESULT 的异常:0x800706BE) 在 System.EnterpriseServices.IRemoteDispatch.RemoteDispatchNotAutoDone(String s)

在这个 COM 类中还有其他方法可以一直调用而没有问题。它只发生在我的新方法上。在向 COM 对象添加新方法时,您需要做一些特别的事情吗?如果需要更多细节,请告诉我。

【问题讨论】:

  • 如果从方法中删除所有代码会发生什么?
  • 它是否使用/公开了其他方法未使用的任何新类型?
  • 我会试试那个约翰。 Damien:我的 COM 方法调用了另一个方法,该方法具有它使用的新结构。我需要用什么东西来装饰那个结构吗?我想如果我按照 John 的建议去做并且它有效,这可能意味着结构让它不开心。否则代码只使用标准的 .net 简单对象。
  • John,从方法中删除代码让它很开心。有没有可能是我引入的自定义结构对象?
  • 我想通了。谢谢

标签: c# com


【解决方案1】:

您是否在更新 COM 对象后重新生成了 COM 互操作包装器?

如果我在此澄清方面有误,请直言:我猜您是从托管 C# 库中引用 COM 库?生成 ref 后,VS 应该为您生成一个互操作包装器,但我不确定它是否会检测到更改并重新生成包装器,除非您手动重新引用您的 COM dll 或自己重新生成互操作器。

【讨论】:

  • 是的。我有两个 C# 项目。一个是 COM,一个是 COM 的调用者。我再次将 COM 项目引用重新添加到调用方项目,没有运气。
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多