![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как заставить работать COM в потоке? [D7, WinXP]
Alex_C © (2006-03-21 16:07:00)Просто в приложении работает отлично
При попытке обращения к серверу из потока выдает: "Не был произведен вызов CoInitialise"
В факах нашел что надо поставить первой строчкой
CoInitFlags := 0;
Application.Initialize;
Сделал. Не работает все равно.
clickmaker (2006-03-21 17:33:00) [1]
> Alex_C © (21.03.06 17:26) [9]
IGlobalInterfaceTable спасет марсианина )
http://www.compdoc.ru/prog/cpp/com/ch5/ch54.shtml
Reindeer Moss Eater (2006-03-21 17:28:00) [2]Чего, не можешь перевести с русского на русский?
:)
Боюсь что переводчиков с таким дипломом здесь нет.
Alex_C (2006-03-21 17:26:00) [3]Ок! Признаю я - Марсианин!
Только объясните в чем проблема!
Вставил так:
В Execute:
CoInitialize(nil);
Далее свою ф-цию. работы с COM
Пишет
" Приложение обратилось к интерфейсу, относящемуся к другому потоку"
Reindeer Moss Eater (2006-03-21 17:21:00) [4]Читай внимательно чего ты туда написал и что тебе сказал компьютер написать туда.
Alex_C (2006-03-21 17:20:00) [5]Я ж написал - вставил я CoInitialise в поток!
Reindeer Moss Eater (2006-03-21 17:11:00) [6]Ты русский или марсианин?
Тебе русским языком компьютер сказал, что не произведен вызов CoInitialise
Произведи вызов CoInitialise
Alex_C (2006-03-21 17:09:00) [7]Нашел в инете по этому поводу статью
Сделал так:
в методе Execute;
begin
CoInitializeEx(NIL, COINIT_MULTITHREADED);
…
CoUninitialize
Теперь вылазиет другая ошибка
Приложение обратилось к интерфейсу, относящемуся к другому потоку
Инициализирую интерфейс в теле основной программы. Его там тоже надо использовать. Как быть?
Reindeer Moss Eater (2006-03-21 16:18:00) [8]В потоке естественно.
Alex_C (2006-03-21 16:17:00) [9]Прошу прощения за тупой вопрос: в каком месте? При создании программы я произвожу ComServ := CoComServ.Create - тут все ок!
А где производить вызов этой ф-ции??
MBo (2006-03-21 16:09:00) [10]Ну раз "Не был произведен вызов CoInitialise"
то напрашиваетсф вывод - вызвать эту функцию CoInitialize(nil)
Reindeer Moss Eater (2006-03-21 16:07:00) [11]>"Не был произведен вызов CoInitialise"
Дык произведи