Re[12]: Вызов событий COM из разных потоков
От: silart  
Дата: 25.11.09 02:20
Оценка: 7 (1)
Здравствуйте, Аркадий, Вы писали:

А>Сделал — то же самое Причем попробовал сохранять в GIT и извлекать, используя напрямую, как IDispatch, так и сам IUpTaskEvents.

А>В случае, если FireEvent вызывается в основном потоке — событие исполняется, всё как и должно быть. В случае, если в слушающем потоке — не работает.

Аркадий, а каким образом вы используете GIT?
У меня с этим были тоже проблемы.
Нужно делать так:
1. Тот поток, который вызывает Advise() должен создать GIT, поместить в него указатель, освободить указатель на GIT.
2. Поток, который генерирует события, тоже должен создать GIT, получить интерфейс по куки, сохранить полученный интерфейс, освободить указатель на GIT.

Если ты в каком-то потоке создашь GIT, сохранишь указатель на него и будешь его использовать из другого потока, то работать не будет. По крайней мере у меня так не работало. GIT нужно создавать в тот моент когда он становится нужен.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.