2010-02-11 16 views
6

Estoy recibiendo una excepción COM cuando intento engancharme a un evento en un objeto COM. Aquí está el código que estoy tratando de ejecutar.COMException en C# cuando se engancha en el evento

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

La línea dos lanza una excepción de tipo COMException con la siguiente información:

System.Runtime.InteropServices.COMException fue capturado

mensaje = "Excepción de HRESULT: 0x80040202"

Fuente = "mscorlib"

ErrorCode = -2147220990

StackTrace: en System.Runtime.InteropServices.ComTypes.IConnectionPoint.Advise (Objeto pUnkSink, Int32 & pdwCookie)

¿Alguien tiene alguna idea de por qué soy incapaz de enganchar en un evento COM o si hay ¿una solución alternativa para conectar eventos COM?

Chris

Respuesta

3

El código de error que tienes es CONNECT_E_CANNOTCONNECT, algo que Googles también. Indica que el servidor COM no está contento con su intento de suscribirse a un controlador de eventos. Por qué no es algo que tendrás que averiguar. Casi siempre se requiere la ayuda del autor o proveedor del componente.

Una cosa que puedes intentar es mirar la biblioteca de tipos con Oleview.exe y averiguar si el evento al que intentas suscribirte está en una interfaz que está marcada como la interfaz de origen predeterminada. Si no es así, intente convertir el objeto al tipo de interfaz de despliegue, luego suscríbase a su evento.

4

El problema era que la interfaz para los eventos no estaba registrada. Una vez que agregué la clave de registro para la interfaz de eventos, esto resolvió el problema. Pude obtener la información de identificación de interfaz usando OLEViewer.exe

Cuestiones relacionadas