Конференция "Corba" » взаимодействие ole обьекта в основном и собственном потоке. [Delphi, Windows]
 
  • CRACKISH © (08.11.10 16:07) [0]
    Приветствую!

    У меня проблема такого рода.

    есть Ole объект который создается при создании формы.

    в собственном потоке я взаимодействую с элементами объекта.  

    в чем суть. так вот. если запускать программу с Delphi то все идеально, а вот если просто запустить екзешник вне Delphi, то программа вылетает как только пытается обратиться к элементам ole объекта в моем потоке.

    если ставлю в начале потока CoInitialize(nil) то все работает, но программа и поток заметно тормозят.

    в чем может быть проблема?
  • clickmaker © (08.11.10 16:36) [1]
    > если ставлю в начале потока CoInitialize(nil) то все работает

    A thread must call CoInitializeEx or CoInitialize before calling any other COM library function except the CoGetMalloc function and other memory allocation calls (CoTaskMemAlloc, CoTaskMemFree, CoTaskMemReAlloc, and the IMalloc methods on the task allocation supplied by CoGetMalloc). Otherwise, the COM library function will return CO_E_NOTINITIALIZED.

    (с) MSDN

    а что значит "тормозят"? на каких действиях?
  • CRACKISH © (08.11.10 16:41) [2]
    да на всех. такое ощущение что главный поток (программа) и мой поток лезут в одну "трубу".
  • CRACKISH © (09.11.10 14:02) [3]
    хм.. создаю отдельный чистый проект. пишу свой код.. и чудо! все работает! и это без всяких CoInitialize(nil), синхронизации и передачей интерфейса от программы к потоку..

    в своем старом проекте перед выполнения потока, активирую форму и тоже чудо работает! но медленнее.. но работает!

    а так при создании формы тока в дельфи и работает и с самой быстрой скоростью.. (( в чем прикол то?
  • CRACKISH © (10.11.10 13:21) [4]
    вот еще.. в мастере совместимости Windows ставишь экзешник совместимым с ранней версией винды и тоже работает все ок.
 
Конференция "Corba" » взаимодействие ole обьекта в основном и собственном потоке. [Delphi, Windows]
Есть новые Нет новых   [118456   +51][b:0][p:0]