2010-05-11 5 views
4

У меня есть приложение .net 4, которое использует Com Dll для отправки SMS-сообщений. Я использовал TlbImp для создания сборки interop, и это то, что указано в приложении..Net Com Interop Создать экземпляр Slow

Когда я пытаюсь создать экземпляр этого класса, он занимает очень много времени (2-5 секунд).

Я запустил профиль производительности в VS 2010, и вызов, который занимает дольше всех, - System.Activator.CreateInstance().

Я ищу советы о том, как отлаживать или получать с помощью Com Interop.

+0

Что такое время загрузки dll без использования .net – volody

ответ

2

Какой тип COM-квартиры является нитью, на которой вы создаете объект?

Если это вы основной поток приложений, и вы не отмечаете вас. Основная точка входа с STAThreadAttribute будет работать в MTA. Если вы используете атрибут, ваш поток будет в STA. Для других потоков вы можете установить тип квартиры, используя Thread.SetApartmentState перед началом потока.

Если ваш объект COM зарегистрирован в другой модели квартиры, чем вы используете, вы понесете накладные расходы на создание новой нити/квартиры, объект, созданный в этой другой квартире, и все сообщения, происходящие через proxy/stubs, а не прямые вызовы на COM-объект.

Это может привести к некоторым проблемам с производительностью.