Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
Алексей |
30.3.2011, 18:55
Сообщение
#1
|
|
Студент ![]() Группа: Участник Сообщений: 37 Регистрация: 29.8.2010 Пользователь №: 1988 Спасибо сказали: 0 раз(а) Репутация: 0
|
Пытаюсь инициализировать COM-объект в другом потоке, Для этого использую класс TestConnector
testconnector.h testconnector.cpp Запускаю: Получаю В основном потоке QAxObject *ax = new QAxObject("Word.Application", 0); выполняется без ошибок. Вроде в документации нигде не написано, что QAxObject должно быть только в главном потоке. |
|
|
|
|
BRE |
30.3.2011, 19:27
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Если не ошибаюсь, в другом потоке нужно инициализировать COM.
Смотри на CoInitializeEx(...) Сообщение отредактировал BRE - 30.3.2011, 19:28 |
|
|
|
|
Алексей |
31.3.2011, 18:05
Сообщение
#3
|
|
Студент ![]() Группа: Участник Сообщений: 37 Регистрация: 29.8.2010 Пользователь №: 1988 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(BRE @ 30.3.2011, 22:27) Link Если не ошибаюсь, в другом потоке нужно инициализировать COM. Смотри на CoInitializeEx(...) Да и вправду помогло, только с перемещением в другой поток возникли проблемы Сделал следующее (изменил только run()): testconnector.h testconnector.cpp Инициализация и всё прочее происходит успешно, откликается на вызовы функций, но при работе с полученным указателем на com-объект, из другого потока (recieveThread), получаю: Или если не останавливать поток, то: При этом из потока TestConnector можно работать даже после перемещения По сути получилось что ком объект привязался к потоку и с ним можно будет только через сигналы работать, хотя хотелось бы чтоб он только асинхронно инициализировался в другом потоке после чего забирался в основной. Сообщение отредактировал Алексей - 31.3.2011, 18:07 |
|
|
|
|
Алексей |
1.4.2011, 17:58
Сообщение
#4
|
|
Студент ![]() Группа: Участник Сообщений: 37 Регистрация: 29.8.2010 Пользователь №: 1988 Спасибо сказали: 0 раз(а) Репутация: 0
|
Вобщем судя по обсуждению на официальном форуме QAxObject при перемещениии в другой поток (moveToThread) не пакует дочерний ком-объект
Если кому-то интересна дальнейшая судьба вопроса: Link |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 27.12.2025, 0:22 |