Запуск COM-событий на C ++ - синхронный или асинхронный?
Вопрос
У меня есть элемент управления ActiveX, написанный с использованием библиотеки MS ATL, и я запускаю события через pDispatch->Invoke(..., DISPATCH_METHOD)
.Элемент управления будет использоваться клиентом .NET, и мой вопрос заключается в следующем - является ли запуск события синхронным или асинхронным вызовом?Меня беспокоит то, что при синхронности приложение, обрабатывающее событие, может вызвать проблемы с производительностью, если оно не вернется немедленно.
Решение
Это синхронно с точки зрения компонента, генерирующего событие.Поток выполнения элемента управления вызовет код получателя, и в этот момент ситуация выйдет из-под его контроля.
Клиенты, получающие информацию о мероприятиях, должны быть уверены, что они быстро вернутся.Если им нужно выполнить какой-то значительный объем работы, то они должны запланировать это асинхронно.Например, отправив сообщение Windows или используя отдельный поток.