Запуск QAxObject в другом потоке |
Здравствуйте, гость ( Вход | Регистрация )
Запуск QAxObject в другом потоке |
Алексей |
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 |
Если не ошибаюсь, в другом потоке нужно инициализировать 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) не пакует дочерний ком-объект
Если кому-то интересна дальнейшая судьба вопроса: http://bugreports.qt.nokia.com/browse/QTBUG-18521 |
|
|
Текстовая версия | Сейчас: 18.4.2024, 15:01 |