.NET COM互操作创建实例缓慢

4
我有一个使用Com Dll发送短信的.net 4应用程序。我使用TlbImp创建了互操作程序集,并在应用程序中引用了它。
当我尝试创建这个类的实例时,需要很长时间(2-5秒)。
我在VS 2010中运行了性能分析,发现最耗时的调用是System.Activator.CreateInstance()。
我正在寻找关于如何调试或使用Com Interop的注意事项的提示。

不使用 .net,DLL 加载时间是多少? - volody
1个回答

2
你正在创建对象的 COM 公寓类型是什么?
如果它是你的主应用程序线程,并且你没有使用 STAThreadAttribute 标记你的主入口点,那么你将在 MTA 中运行。如果你使用该属性,则你的线程将在 STA 中运行。对于其他线程,你可以在启动线程之前使用 Thread.SetApartmentState 设置公寓类型。
如果你的 COM 对象与你使用的不同公寓模型注册,你将遭受新线程/公寓被启动、该对象在另一个公寓中被创建,并且所有通信都通过代理/存根而不是直接调用 COM 对象发生的开销。
这可能会导致一些性能问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接