2010-05-11 89 views
4

我有一個使用Com DLL發送SMS消息的.net 4應用程序。我用TlbImp創建了互操作程序集,這就是應用程序中引用的內容。.Net Com Interop創建實例緩慢

當我嘗試創建此類的實例時,需要很長時間(2-5秒)。

我在VS 2010中運行了性能配置文件,最長時間的調用是System.Activator.CreateInstance()。

我正在尋找關於如何調試或使用Com Interop的疑難問題的提示。

+0

什麼是dll加載時間沒有使用.net – volody 2010-05-11 21:07:19

回答

2

什麼COM公寓類型是您創建對象的線程?

如果它是你的主應用程序線程,並且你不標記你你將在MTA中運行的主入口點STAThreadAttribute。如果您使用線程將在STA中的屬性。對於其他線程,您可以在啓動線程之前使用Thread.SetApartmentState來設置公寓類型。

如果您的COM對象註冊了與您使用的不同的公寓模型,則會產生一個正在啓動的新線程/公寓的開銷,該對象在該另一個公寓中創建,以及所有通過代理/存根而不是對COM對象的直接調用。

這可能會導致一些性能問題。