Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.012 c
3-38123
karan1
2003-01-28 12:16
2003.02.13
(XML) SAX ... что посоветуете...


3-38136
Spell
2003-01-27 21:00
2003.02.13
Transaction IBase


1-38259
Ihtiandr
2003-02-05 13:18
2003.02.13
Hint Combobox


1-38276
Кило
2003-02-05 17:02
2003.02.13
Как по ссылке получить значение?


14-38434
Stager
2003-01-25 00:46
2003.02.13
Нужны злые люди. Для критики.




   Наверх