У меня есть COM-сервер (С++/STA (приложение на основе MFC)) и COM-клиент (С#/MTA). COM-сервер должен жить в STA, так как это приложение MFC (у меня нет выбора в этом вопросе). Клиент выдает вызов серверу, а сервер выдает обратный вызов клиенту. То, где происходит ошибка (RPC_E_CANTCALLOUT_ININPUTSYNCCALL
). Я предполагаю, что если сервер был MTA, эта проблема никогда бы не возникла, но, к сожалению, документация для MFC явно отрицает инициализацию квартиры как MTA.
Любые идеи о том, как обойти эту проблему?
Я играю с идеей позволить объекту сервера (объект, который я просматриваю в текущей таблице объектов) жить в собственной квартире (MTA). Будет ли это хорошей идеей, или есть что-то более простое, чтобы попробовать в первую очередь?
ОБНОВЛЕНИЕ
Объект сервера - это просто тонкий интерфейс, указывающий на определенные функции внутри приложения. Большую часть времени он просто читает и записывает в ячейки памяти, но есть экземпляры, где он генерирует оконные сообщения для различных окон в приложении. Сам объект сервера - это не все приложение.