Ресурсы обычно возвращаются в систему, когда процесс завершается, а не когда один из его потоков.
Тем не менее, CoUninitialize () не только освобождает ресурсы и выгружает библиотеки DLL, но также входит в модальный цикл обработки сообщений для прокачки оставшихся сообщений COM до завершения потока. В документации написано:
Если остаются открытые разговоры, CoUninitialize
запускает
модальный цикл сообщений и отправляет все ожидающие сообщения от
контейнеры или сервер для этого приложения COM. Отправляя
CoUninitialize
гарантирует, что приложение не закроется
до получения всех ожидающих сообщений. Не COM-сообщения
отбрасывают. * * 1 010
Поэтому, чтобы избежать ошибок RPC на стороне вызывающих, я бы рекомендовал вам следовать советам документации и всегда вызывать CoUninitialize()
перед завершением потоков, которые вызвали CoInitializeEx()
.