1
C#最简单的COM Interop应用程序泄漏内存 - 我做错了什么?
namespace TestController
{
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IController {
void DoSomething();
}
[ComVisible(true), ClassInterface(ClassInterfaceType.None)]
public class ControllerImpl : IController {
public void DoSomething()
{
throw new NotImplementedException();
}
}
}
C++
#import "c:\prj\Controller\bin\Debug\TestController.tlb"
using namespace TestController;
int _tmain(int argc, _TCHAR* argv[])
{
IControllerPtr ctrl;
CoInitializeEx(NULL, COINIT_MULTITHREADED);
while (true) {
HRESULT hr = ctrl.CreateInstance(__uuidof(ControllerImpl));
ctrl = 0;
}
return 0;
}
大家好,
我需要提供从非托管代码访问我的.NET类库。 Beeing对这个主题完全陌生,我花了好几天的时间研究COM/interop,然后定义并实现了一个COM可访问的接口,进行了一次测试运行并且一切正常,直到我注意到一些看起来像内存泄漏的东西。我隔离了这些违规的陈述,但仍然不知道为什么上面的代码被破坏了。
你的错误是使用COM的所有=) – 2009-11-26 17:56:24
你可以给一点更多的细节?如果.NET com interop以某种方式损坏,我们将改变这项技术。不过,我希望看到我在上面的例子中发生的任何错误。 – 2009-11-27 13:46:32