Запуск COM-событий на C ++ - синхронный или асинхронный?

StackOverflow https://stackoverflow.com/questions/86474

  •  01-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top