尝试通过其他.NET应用程序使用COM可见.NET类,并得到例外:Marshal.ReleaseComObject的抛出异常
消息:该对象的类型必须是 __ComObject或__ComObject的。
参数名:○
堆栈跟踪:在 System.Runtime.InteropServices.Marshal.ReleaseComObject(对象 O)
类如下所示:
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IViewer : IComInteropDefinedInterface
{
}
[ClassInterface(ClassInterfaceType.None)]
[ComVisible(true)]
[Guid("[some guid]")]
public class MyViewer : UserControl, IViewer
{
//IViewer implementation
}
我注册的组件:
regasm [Assembly Path] /tlb /codebase
客户端应用程序也在.NET中实例化了给定的类,但是当他调用Marshal.ReleaseComObject()
时,它会得到上述异常。
解决此问题的任何想法?
编辑: 不幸的是,我不能提供实例化我的对象的客户端应用程序代码。但是我知道客户端使用相同的方法来实例化实际的COM对象。
您可以包括在您的实例化对象和你在哪里调用'ReleaseComObject'过的代码?什么类型的对象你释放?它似乎不是一个COM对象。另外:在这种情况下你想使用COM的原因是什么?如果不使用COM,使用.NET的.NET程序集会更容易(实际上,我怀疑您已经这么做了;-) – 2010-08-24 08:27:59
您可以发布客户端代码,很高兴看到组件是如何实例化的 – 2010-08-24 08:28:40
不幸的是,我无法提供实例化我的对象的客户端应用程序代码。但是我知道客户端使用相同的方法来实例化实际的COM对象。 – Aaron 2010-08-24 08:51:03