Это, как правило, невозможно. COM заботится о требованиях к потокам для COM-сервера. Который он рекламирует в реестре. Посмотрите Regedit.exe и найдите ключ HKCR \ CLSID {guid} для используемого вами класса. Ключ ThreadingModel сообщает, что требуется.
Если он отсутствует или имеет значение Apartment, сервер сообщает, что его необходимо создать в потоке STA, и его методы интерфейса должны вызываться из того же потока. Если вы вызываете метод из другого потока, то вызов передается в поток STA. Это безопасно, но медленно, и у вас нет параллелизма.
Если для этого параметра установлено значение «Оба», то при создании объекта COM в потоке STA вызов по-прежнему маршалируется. Но не тогда, когда он был создан в потоке MTA. Только Free позволяет бесплатно создавать потоки. Что очень редко, подавляющее большинство COM-компонентов имеют многопотоковую структуру и не имеют внутренней защиты, необходимой для выполнения вызовов из рабочего потока.
Обычно в программе есть только один поток STA - поток запуска. Он должен прокачать цикл сообщений, жесткое требование для STA. Если у вас его нет, COM создаст поток STA для вас, чтобы найти хороший дом для сервера. Все звонки будут упорядочены.
Не очень хорошие новости, я уверен, что в потоке нет бесплатного ланча.