Здравствуйте, гость ( Вход | Регистрация )
Алексей | Дата 1.4.2011, 17:58 |
Вобщем судя по обсуждению на официальном форуме QAxObject при перемещениии в другой поток (moveToThread) не пакует дочерний ком-объект Если кому-то интересна дальнейшая судьба вопроса: http://bugreports.qt.nokia.com/browse/QTBUG-18521 |
|
Алексей | Дата 31.3.2011, 18:05 |
Если не ошибаюсь, в другом потоке нужно инициализировать COM. Смотри на CoInitializeEx(...) Да и вправду помогло, только с перемещением в другой поток возникли проблемы Сделал следующее (изменил только run()): testconnector.h
testconnector.cpp
Инициализация и всё прочее происходит успешно, откликается на вызовы функций, но при работе с полученным указателем на com-объект, из другого потока (recieveThread), получаю:
Или если не останавливать поток, то:
При этом из потока TestConnector можно работать даже после перемещения По сути получилось что ком объект привязался к потоку и с ним можно будет только через сигналы работать, хотя хотелось бы чтоб он только асинхронно инициализировался в другом потоке после чего забирался в основной. |
|
BRE | Дата 30.3.2011, 19:27 |
Если не ошибаюсь, в другом потоке нужно инициализировать COM. Смотри на CoInitializeEx(...) |
|
Алексей | Дата 30.3.2011, 18:55 |
Пытаюсь инициализировать COM-объект в другом потоке, Для этого использую класс TestConnector testconnector.h
testconnector.cpp
Запускаю:
Получаю
В основном потоке QAxObject *ax = new QAxObject("Word.Application", 0); выполняется без ошибок. Вроде в документации нигде не написано, что QAxObject должно быть только в главном потоке. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 26.4.2024, 6:15 |