.Net Com Interop创建实例慢

我有一个使用Com Dll发送短信的.net 4应用程序.我使用TlbImp来创建互操作程序集,这是应用程序中引用的内容.

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

我在VS 2010中运行了性能配置文件,到目前为止最长的调用是System.Activator.CreateInstance().

我正在寻找有关如何使用Com Interop进行调试或陷入困境的提示.

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

如果它是您的主应用程序线程,并且您没有使用STAThreadAttribute标记主入口点,那么您将在MTA中运行.如果您使用该属性,您的线程将在STA中.对于其他线程,您可以在启动线程之前使用Thread.SetApartmentState设置单元类型.

如果你的COM对象注册的是不同于你正在使用的公寓模型,你将会产生新的线程/公寓的开销,在另一个公寓中创建的对象,以及通过代理/存根发生的所有通信而不是COM对象上的直接调用.

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

点赞