Неизвестная функция CoUninitializeE обнаруживается во время профилирования - PullRequest
2 голосов
/ 29 сентября 2011

При использовании SlimTune для профилирования приложения на C # я обнаружил, что при включении профилирования нативных функций появляется много записей для функции под названием «CoUninitializeE». CoUninitialize, похоже, связан с COM-объектами, однако я не использую напрямую какие-либо Com-объекты, и у Google нет информации о версии, заканчивающейся на E.

Кто-нибудь знает, что это за функция / как сократить время, затрачиваемое на нее? (Например, связано ли это с управлением памятью, так что сокращение выделения или освобождения памяти могло бы помочь?)

Редактировать

Похоже, что имя функции на самом деле "CoUninitializeEx", и что SlimTune по какой-то причине просто отсекает букву. Я все еще был бы признателен за знание того, что приводит к вызову этой функции.

1 Ответ

3 голосов
/ 29 сентября 2011

CoInitalizeEx () и CoUninitialize () являются довольно ядром в программировании Windows.Они соответственно инициализируют и отключают COM в потоке.CLR вызывает эти функции автоматически до и после запуска потока.Довольно сложно избежать использования COM в программе .NET, это базовая модель расширяемости для собственного кода Windows.Совершенно невидимый, благодаря множеству классов-оболочек в .NET Framework, скрывающих сантехнику.

Общая диагностика заключается в том, что вы используете много потоков.Да, дорогоПул потоков - это обходной путь.

...