2010-05-11 71 views
4

我有一个使用Com DLL发送SMS消息的.net 4应用程序。我用TlbImp创建了互操作程序集,这就是应用程序中引用的内容。.Net Com Interop创建实例缓慢

当我尝试创建此类的实例时,需要很长时间(2-5秒)。

我在VS 2010中运行了性能配置文件,最长时间的调用是System.Activator.CreateInstance()。

我正在寻找关于如何调试或使用Com Interop的疑难问题的提示。

+0

什么是dll加载时间没有使用.net – volody 2010-05-11 21:07:19

回答

2

什么COM公寓类型是您创建对象的线程?

如果它是你的主应用程序线程,并且你不标记你你将在MTA中运行的主入口点STAThreadAttribute。如果您使用线程将在STA中的属性。对于其他线程,您可以在启动线程之前使用Thread.SetApartmentState来设置公寓类型。

如果您的COM对象注册了与您使用的不同的公寓模型,则会产生一个正在启动的新线程/公寓的开销,该对象在该另一个公寓中创建,以及所有通过代理/存根而不是对COM对象的直接调用。

这可能会导致一些性能问题。