我有一个使用Com Dll发送短信的.net 4应用程序。我使用TlbImp来创建互操作程序集,这是应用程序中引用的内容。
当我尝试创建此类的实例时,需要很长时间(2-5秒)。
我在VS 2010中运行了性能配置文件,到目前为止最长的调用是System.Activator.CreateInstance()。
我正在寻找有关如何使用Com Interop调试或解决问题的提示。
答案 0 :(得分:2)
什么COM公寓类型是您创建对象的线程?
如果是您的主应用程序主题并且您没有使用STAThreadAttribute标记主要入口点,那么您将在MTA中运行。如果您使用该属性,您的线程将在STA中。对于其他线程,您可以在启动线程之前使用Thread.SetApartmentState设置公寓类型。
如果您的COM对象使用的是与您使用的公寓型号不同的公寓型号,则会产生新的线程/公寓正在旋转,在其他公寓中创建的对象以及通过代理进行的所有通信的开销/ stub而不是COM对象上的直接调用。
这可能会导致一些性能问题。