【问题标题】:.Net Com Interop Create Instance Slow.Net Com 互操作创建实例慢
【发布时间】:2011-02-18 08:32:45
【问题描述】:

我有一个使用 Com Dll 发送 SMS 消息的 .net 4 应用程序。我使用 TlbImp 创建互操作程序集,这就是应用程序中引用的内容。

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

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

我正在寻找有关如何使用 Com Interop 进行调试或遇到问题的提示。

【问题讨论】:

  • 不使用 .net 的 dll 加载时间是多少

标签: .net com com-interop


【解决方案1】:

您创建对象的线程是什么 COM 单元类型?

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

如果您的 COM 对象注册到的单元模型与您使用的不同,您将承担启动新线程/单元、在另一个单元中创建对象以及通过代理发生的所有通信的开销/stubs 而不是直接调用 COM 对象。

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

【讨论】:

    猜你喜欢
    • 2012-10-07
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    相关资源
    最近更新 更多