关于在C ++中触发COM事件:在C ++中触发COM事件-同步还是异步?

关于在C ++中触发COM事件:在C ++中触发COM事件-同步还是异步?

Firing COM events in C++ - Synchronous or asynchronous?

我有一个使用MS ATL库编写的ActiveX控件,并且正在通过pDispatch->Invoke(..., DISPATCH_METHOD)触发事件。 该控件将由.NET客户端使用,我的问题是-事件触发是同步还是异步调用? 我担心的是,如果该应用程序是同步的,则处理该事件的应用程序可能会导致性能问题,除非它立即返回。


从生成事件的组件的角度来看,它是同步的。 控件的执行线程将调出接收者代码,而此时该控件不在控制范围之内。

接收事件的客户必须确保他们能够迅速返回。 如果他们需要做大量工作,那么他们应该异步安排此工作。 例如,通过发布Windows消息或使用单独的线程。


推荐阅读