У меня есть приложение, которое создает поток, который общается с основным пользовательским интерфейсом через сообщения Windows.Он просто отправляет сообщение в основной поток приложения и получает статус.
Таким образом, я отображаю модальные окна и занимаюсь другими делами.
Проблема в том, что мне нужно отобразить форму, котораязвонит на com + сервер.Таким образом я получаю ошибку OLE 8001010D: исходящий вызов не может быть выполнен, так как приложение отправляет входной синхронный вызов.
Я думаю, что это происходит, потому что используется основной SendMessage, а вызовы com + требуют сообщений Windows для своих задач.
Во всяком случае, в Delphi я не могу отобразить форму из потока, но как я могу обойти проблему ...?
Спасибо
РЕДАКТИРОВАТЬ:
- MAIN (UI) 2. РЕЗЬБА
A.Поток (2) отправляет сообщение в основной поток (1) B. Основной поток (1) получает сообщение и, прежде чем позволить ему вернуться в поток, отображает окно.C. Модальное окно в главном потоке хочет сделать вызов com +, возникает вышеуказанная ошибка.
В каком потоке находится модальное окно?2. Из какого потока идет COM-вызов?3. В каком потоке был создан экземпляр COM-объекта?4. Фоновый поток инициализируется STA?5. Показывается ли модальная форма из обработчика SendMessage?- Роман Р. 2 минуты назад
- MAIN
- MAIN
- MAIN
- CoInitializeEx (ноль, COINIT_MULTITHREADED);
- да.