我确实在 C# 中定义了一个带有事件的接口:
[ComVisible(true), InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("02F91299-B87C-47D2-B501-7768E767E012")]
public interface IFoo
{
event FooEventHandler FooEvent;
}
[ComVisible(true), Guid("2CB3858D-5729-47A1-B46B-C2C37C522E10")]
public delegate void FooEventHandler(IFoo sender, int status);
我必须在非托管 C++ ATL DLL 中实现这个接口。代码类向导建议是:
STDMETHOD(add_FooEvent)(_FooEventHandler * value);
STDMETHOD(remove_FooEvent)(_FooEventHandler * value);
我将 FooEventHandler 视为 IDispatch 对象。我确实将那些 _FooEventHandler * 值添加/删除到列表中。
现在我的问题是:如何为所有存储的 _FooEventHandlers 触发/调用此事件?
谢谢, 出租车司机
更新: 我在这里找到了答案:使用 C++ 将管理事件暴露给 COM