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

Posted

技术标签:

【中文标题】在 C++ 中触发 COM 事件 - 同步还是异步?【英文标题】:Firing COM events in C++ - Synchronous or asynchronous? 【发布时间】:2010-09-10 07:57:05 【问题描述】:

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

【问题讨论】:

【参考方案1】:

从生成事件的组件的角度来看,它是同步的。控件的执行线程将调用接收者代码,此时一切都超出了它的控制范围。

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

【讨论】:

以上是关于在 C++ 中触发 COM 事件 - 同步还是异步?的主要内容,如果未能解决你的问题,请参考以下文章

基础项目异步复位同步触发程序设计讲解

使用HTTP的同步方式还是异步方式?

事件是异步还是同步?

NSNotification是同步还是异步?和delegate相比有啥区别,效率呢?

react中的setState到底是同步还是异步?

Sql触发器是同步还是异步?