![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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
Любопытное утверждение ..