我有一个 .net 4 应用程序,它使用 Com Dll 发送 SMS 消息。我使用 TlbImp 创建互操作程序集,这就是应用程序中引用的内容。
当我尝试创建此类的实例时,它需要很长时间(2-5 秒)。
我在 VS 2010 中运行了性能配置文件,到目前为止耗时最长的调用是 System.Activator.CreateInstance()。
我正在寻找有关如何使用 Com Interop 进行调试或遇到问题的提示。
最佳答案
您在其上创建对象的线程是什么 COM 单元类型?
如果它是您的主应用程序线程并且您没有使用 STAThreadAttribute 标记您的 Main 入口点您将在 MTA 中运行。如果您使用该属性,您的线程将位于 STA 中。对于其他线程,您可以使用 Thread.SetApartmentState 设置单元类型。在开始线程之前。
如果您的 COM 对象注册的单元模型与您使用的单元模型不同,则您将承担启动新线程/单元、在该其他单元中创建对象以及通过代理/ stub 而不是通过代理/ stub 发生的所有通信的开销而不是直接调用 COM 对象。
这可能会导致一些性能问题。
关于.Net Com Interop 创建实例缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814423/