我有一个使用Com发送短信的.net 4应用程序。我使用TlbImp创建互操作程序集,这是应用程序中引用的程序集。
当我尝试创建这个类的实例时,需要很长时间(2-5秒)。
我在VS2010中运行了performance profile,到目前为止花费时间最长的调用是System.Activator.CreateInstance()。
我正在寻找关于如何调试或使用Com Interop的技巧。
发布于 2011-06-04 08:52:48
您正在创建对象的线程是什么COM单元类型?
如果它是您的主应用程序线程,并且您没有使用STAThreadAttribute标记您的主入口点,那么您将在MTA中运行。如果你使用这个属性,你的线程将在STA中。对于其他线程,您可以在启动线程之前使用Thread.SetApartmentState设置单元类型。
如果您的COM对象是使用与您正在使用的单元模型不同的单元模型注册的,则会产生启动新线程/单元的开销,在另一个单元中创建对象,并且所有通信都通过代理/存根发生,而不是直接调用COM对象。
这可能会导致一些性能问题。
https://stackoverflow.com/questions/2814423
复制相似问题