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