.Net Com Interop 创建实例缓慢

标签 .net com com-interop

我有一个 .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/

相关文章:

c# - 如何将 "&Source"添加到 DataNavigateUrlFormatString?

c# - 如何让 AutoIt 引用在 C# 中工作?

c++ - COM - _pAtlModule->Lock() 究竟锁定了什么?

delphi - 我需要在 Delphi 中免费 IDispatch

.net - 如何获取 .NET CCW 程序集以从 dll.config 加载配置

c# - COM 与 .Net 的互操作性 - 缺少方法/属性

c# - 动态运行 dotnet 代码的软件(或命令行)

c# - 使用异步,等待 VS2013 目标 - .NET 4

asp.net - 谷歌浏览器崩溃后恢复 session cookie,如何避免?

.net - interop dll如何轻松更新?