| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: ActiveX/СОМ/CORBA > ole обьект в основном и собственноv потоке |
| Автор: CRACKISH 8.11.2010, 16:19 |
| Приветствую! У меня проблема такого рода. есть Ole объект который создается при создании формы. в собственном потоке я взаимодействую с элементами объекта. в чем суть. так вот. если запускать программу с Delphi то все идеально, а вот если просто запустить екзешник вне Delphi, то программа вылетает как только пытается обратиться к элементам ole объекта в моем потоке. если ставлю в начале потока CoInitialize(nil) то все работает, но программа и поток заметно тормозят. в чем может быть проблема? |
| Автор: CRACKISH 9.11.2010, 14:02 |
| хм.. создаю отдельный чистый проект. пишу свой код.. и чудо! все работает! и это без всяких CoInitialize(nil), синхронизации и передачей интерфейса от программы к потоку.. в своем старом проекте перед выполнения потока, активирую форму и тоже чудо работает! но медленнее.. но работает! а так при создании формы тока в дельфи и работает и с самой быстрой скоростью.. (( в чем прикол то? |
| Автор: cat512 9.11.2010, 17:20 |
| Imho, чудес и мистики в области разработки ПО не бывает! Без coinitialize работает потому что Coinitialize выполняется в Application. Initialize (емнип) Смотри в сторону Threading Model. Если хочешь не заморачиваться с синхронизацией, используй Threading model - tmSingle. Тогда вызовы серверу будут сериализовываться Если необходимо использовать многопоточность обязательно нужно синхронизировать вызовы и обязательно МАРШАЛИТЬ ссылки между потоками, иначе будут глюки! Причём самое хреновое - у тебя они могут не проявляться, но как правило, обязательно проявятся у заказчика |