2010-02-11 9 views
6

Ricevo un'eccezione COM durante il tentativo di aggancio in un evento su un oggetto COM. Ecco il codice che sto cercando di eseguire.COMException in C# durante l'aggancio nell'evento

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

Linea due genera un'eccezione di tipo COMException con le seguenti informazioni:

System.Runtime.InteropServices.COMException è stato catturato

Messaggio = "Eccezione da HRESULT: 0x80040202"

Source = "mscorlib"

ErrorCode = -2147220990

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

Qualcuno ha qualche idea per cui sono in grado di collegare in un evento di COM o se c'è una soluzione alternativa per l'aggancio in eventi COM?

Chris

risposta

3

Il codice di errore che hai è CONNECT_E_CANNOTCONNECT, qualcosa che Googles bene. Indica che il server COM non è contento del tuo tentativo di sottoscrivere un gestore di eventi. Perché non è qualcosa che dovrai scoprire. Ottenere aiuto dall'autore del componente o dal fornitore è quasi sempre richiesto.

Una cosa che puoi provare è guardare la libreria dei tipi con Oleview.exe e scoprire se l'evento a cui stai tentando di iscriverti è su un dispatch che è contrassegnato come l'interfaccia di origine predefinita. Se non lo è, prova a trasmettere l'oggetto al tipo di dispatch, quindi iscriviti al suo evento.

4

Il problema era che l'interfaccia per gli eventi non era registrata. Una volta aggiunta la chiave di registro per l'interfaccia degli eventi, questo risolve il problema. Sono stato in grado di ottenere le informazioni sull'ID dell'interfaccia utilizzando OLEViewer.exe

Problemi correlati