Форум — Ответы ( К темам )
? | OLEG: Word в потоке — интересный вопрос для понимающих (29-04-2003 19:25:31) |
Такая ситуация. Строю отчет в Word (использую TWordApplication, TWordDocument). Главная форма — Form1 У неё есть мето void __fastcall CreateReport(void) { WordApplication1->Connect(); .... //передвижение ProgressBar (2 штуки) } Поток сделан для предоставления пользователю возможности прервать процесс построения отчета. Так как приходится иметь дело с ProgressBar из второго потока, поток создаётся с помощь TReportThread (потомок TThread) TReportThread::TReportThread (TForm* MainForm) : TThread (false) //запустить поток сразу при создании TReportThread::Execute() { Synchronize(MainForm->CreateReport); } Так вот дело в том, что всё работает отлично, кроме доступа к Word! При любом обращении к Word получаю error-message: ... raised exception EOleSysError with message "Не удаётся выполнить исходящий вызов, так как приложение обрабатывает входящих синхронный вызов". Поймать EOleSysError — не могу. Его ловит Word. Есть какие-нибудь идеи, как это побороть? Без потоков работает нормально (естественно, процесс формирования отчета прервать низя). Может, лучше бросить эти потоки в %.~^! и PumpMessage сделать (ловить сообщения и передавать главному окну? (хотя как это работать будет, понятно... %.~^!... Тормозить будет) Помогите, кто знает. Может, какая особенность в Word есть? Чем он там занят постоянно (AutoConnect не использую, ConnectKind=..NewInstance). Беда какая-то | |
Skolotovich (06-05-2003 10:15:43) | |
скорее всего придется все таки потоки в !"№;;%№":. енто проблема реализации ОЛЕ. есть вариант другой -- более гИморойный -- DDE но с ним не работал, тут ни чем не помогу |