Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IDispatch и Потоки


Gerda ©   (2007-07-16 16:01:00) 

В потоке 1 есть IDispatch и делается CoMarshalInterThreadInterfaceInStream
во 2-м потоке
CoGetInterfaceAndReleaseStream и т.д.
но поскольку CoGetInterfaceAndReleaseStream освобождает поток
нельзя повторно использовать методы Idispatch.

Как сделать, чтобы во 2-ьм потоке постоянно можно было бы работать
с IDispatch первого потока


gerda   (2007-07-17 09:18:00) [1]

всем СПАСИБО


SlymRO   (2007-07-17 05:31:00) [2]

Поток 2
var pObject : IDispatch;
наступает событие №1
GetInterfaceAndReleaseStream(IStream (fStream), IDispatch, pObject)
маршал-поток fStream разрушен
pObject.Metod1
pObject.Metod2
pObject.Metod3
pObject.Metod4


SlymRO   (2007-07-17 05:30:00) [3]

наступает событие №2, что делать?
pObject.Metod1


Gerda   (2007-07-16 17:05:00) [4]

Что не понятно?


Gerda   (2007-07-16 16:50:00) [5]

Поток 1;
var v : IDispatch;
    fStream : pointer; // общая для 2-х потоков
CoMarshalInterThreadInterfaceInStream(IDispatch,V as IUnknown,IStream (fStream));

Поток 2
var pObject : IDispatch;
наступает событие №1
GetInterfaceAndReleaseStream(IStream (fStream), IDispatch, pObject)
pObject.Metod1
маршал-поток fStream разрушен
но поток № 2 не завершился
наступает событие №2, что делать?


umbra   (2007-07-16 16:40:00) [6]


> как повторно в нем использовать IDispatch из первого потока

что значит "повторно"? небольшое количество кода с пояснениями прояснило бы ситуацию.


Gerda   (2007-07-16 16:35:00) [7]

О разрушении обьекта не говорилось.
Поскольку маршал-поток разрушен во 2-м потоке,
как повторно в нем использовать IDispatch из первого потока


Сергей М.   (2007-07-16 16:32:00) [8]

ReleaseStream говорит лишь о разрушении маршал-потока, но не о разрушении объекта.


Gerda   (2007-07-16 16:25:00) [9]

Почему?
окончание CoGetInterface AndReleaseStream
четко об этом говорит


Сергей М.   (2007-07-16 16:19:00) [10]


> поскольку CoGetInterfaceAndReleaseStream освобождает поток
> нельзя повторно использовать методы Idispatch


Любопытное утверждение ..


Наверх

Титульная страница Поиск, карта сайта Написать письмо