crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> wxAutomationObject и wxThread, невозможно создать OLE объект из дочернего потока
Iron Bug
  опции профиля:
сообщение 15.6.2010, 14:22
Сообщение #1


Профессионал
*****

Группа: Модератор
Сообщений: 1593
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 218 раз(а)




Репутация:   12  


Наблюдаю странное поведение при создании OLE объекта в wxWidgets.
(Компилю в msvc 8.0, wxWidgets 2.8.10, с 2.8.11 тоже проверила - та же беда)

Пытаюсь открыть Excel, чтобы туда свалить данные. Код такой:

    wxAutomationObject *pexcelObject = new wxAutomationObject();
    bool res = pexcelObject->CreateInstance(_T("Excel.Application"));


Когда запускаю это в основном потоке (в методе формы, унаследованной от wxFrame) - res равен true и всё пучком.
Далее, захотелось вынести этот кусок в параллельный поток (используя wxThread) и вот тут поджидала засада: тот же кусок в параллельном потоке просто напрочь отказывается работать: res всегда равен false.
Даже при попытке передачи указателя на объект между потоками он "теряет свои магические свойства" - то есть, на попытки вызова методов в дочернем потоке возвращает false и нули, а из основного потока всё без проблем.
Внутри метода CreateInstance в обоих случаях вызывается CoCreateInstance, причём с совершенно одинаковыми параметрами. В одном случае он возвращает true, в другом - false.
В чём может быть проблема?

Сообщение отредактировал Iron Bug - 15.6.2010, 14:43
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 14.12.2019, 16:26