Запуск COM-событий в C ++ - синхронный или асинхронный? - PullRequest
0 голосов
/ 17 сентября 2008

У меня есть элемент управления ActiveX, написанный с использованием библиотеки MS ATL, и я запускаю события через pDispatch->Invoke(..., DISPATCH_METHOD). Элемент управления будет использоваться клиентом .NET, и мой вопрос таков: является ли запуск события синхронным или асинхронным вызовом? Меня беспокоит то, что приложение, которое обрабатывает событие, может быть синхронным, может вызвать проблемы с производительностью, если оно не вернется немедленно.

1 Ответ

4 голосов
/ 17 сентября 2008

Это синхронно с точки зрения компонента, генерирующего событие. Поток выполнения элемента управления вызовет код получателя, и в этот момент все будет вне его контроля.

Клиенты, получающие события, должны убедиться, что они возвращаются быстро. Если им нужно выполнить значительный объем работы, они должны запланировать это асинхронно. Например, опубликовав сообщение Windows или используя отдельную ветку.

...