Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
ВнизCreateThread Найти похожие ветки
← →
alvin (2003-01-01 16:33) [0]Уважаемые Мастера. Имеется процедура, создающая достаточно большой отчет в Wordе. Поскольку это занимает много времени, хотелось бы запустить ее в отдельном потоке. При попытке запуска потока с помощью CreateThread, выдается сообщение об ошибке "raised exception class EOleSysError with message
"Не был произведен вызов CoInitialize"".
Работаю с Word через word_tlb под Delphi4.
← →
Alex Konshin (2003-01-01 18:15) [1]Еще раз: используйте BeginThread/EndThread.
Это, правда, не ответ на вопрос, а лишь замечание.
Цитата из MSDN:
CoInitialize
Initializes the COM library on the current thread and identifies the concurrency model as single-thread apartment (STA). Applications must initialize the COM library before they can call COM library functions other than CoGetMalloc and memory allocation functions.
Честно говоря, не знаю, есть ли у Delphi отдельный мозг для инициализации OLE в других нитях, пусть лучше ответят те, кто с этим сталкивался.
← →
alvin (2003-01-02 13:43) [2]Подключил ActiveX, дописал CoInitialize(nil) и все воркает (не знаю правда, насколько это корректно).
Спасибо, буду чаще заглядывать в HELP
← →
asmith (2003-01-02 18:55) [3]> Честно говоря, не знаю, есть ли у Delphi отдельный мозг для инициализации OLE в других нитях, пусть лучше ответят те, кто с этим сталкивался.
Нет, Delphi этого не делает. Поэтому для каждого создаваемого потока нужно явно вызвать CoInitialize, а по его завершению - соответственно CoUninitialize.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.009 c