2008-09-17 8 views
0

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

ответ

4

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

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