【问题标题】:COMException in C# when hooking into event挂钩事件时 C# 中的 COMException
【发布时间】:2010-02-11 18:05:48
【问题描述】:

我在尝试挂​​接到 COM 对象上的事件时收到 COM 异常。这是我要执行的代码。

COMClass a = IComClass as ComClass;
a.SomeEvent += new SomeEvent_EventHandler(MethodNameHere);

第二行抛出一个 COMException 类型的异常,并包含以下信息:

System.Runtime.InteropServices.COMException 被捕获

Message="HRESULT 异常:0x80040202"

Source="mscorlib"

错误代码=-2147220990

堆栈跟踪: 在 System.Runtime.InteropServices.ComTypes.IConnectionPoint.Advise(对象 pUnkSink, Int32& pdwCookie)

有没有人知道为什么我无法连接到 COM 事件,或者是否有解决方法可以连接到 COM 事件?

【问题讨论】:

    标签: c# .net events com interop


    【解决方案1】:

    问题是事件的接口没有注册。一旦我为事件接口添加了注册表项,问题就解决了。我能够使用 OLEViewer.exe 获取接口 id 信息

    【讨论】:

      【解决方案2】:

      您得到的错误代码是 CONNECT_E_CANNOTCONNECT,Google 搜索结果很好。这表明 COM 服务器对您订阅事件处理程序的尝试不满意。为什么它不是你需要找出的东西。几乎总是需要从组件作者或供应商那里获得帮助。

      您可以尝试的一件事是使用 Oleview.exe 查看类型库,并确定您尝试订阅的事件是否位于标记为默认源接口的调度接口上。如果不是,请尝试将对象强制转换为调度接口类型,然后订阅其事件。

      【讨论】:

        猜你喜欢
        • 2011-05-16
        • 2022-08-20
        • 2018-02-14
        • 1970-01-01
        • 2013-04-01
        • 1970-01-01
        • 2011-03-01
        • 1970-01-01
        • 2016-09-22
        相关资源
        最近更新 更多