У меня есть многопоточное приложение с графическим интерфейсом C ++ Builder, которое взаимодействует со сторонним приложением через COM.
Мне нужно вызывать методы COM-объекта из нескольких потоков, и я защищаю доступ с помощью мьютекса. Очевидно, что основной поток GUI должен использовать модель STA, но мои рабочие потоки должны использовать MTA. COM-объект создается в потоке MTA.
Все работает нормально , за исключением доступа к COM-объекту из потока GUI, из-за несоответствия MTA / STA.
Я немного читал о маршаллинге, но не пытался его реализовать, потому что примеры, которые я видел, похоже, требуют различной семантики доступа в зависимости от текущей модели квартиры, и я действительно хотел бы иметь код (из POV программиста) не заботится о текущей модели квартиры.
Итак, есть ли идиоматический способ написания COM-кода, который работает с «тем же» объектом, но может вызываться как из потоков STA, так и из MTA?