Я получаю COM-исключение при попытке сцепиться в событие на COM-объекте. Вот код, который я пытаюсь выполнить.
COMClass a = IComClass as ComClass;
a.SomeEvent += new SomeEvent_EventHandler(MethodNameHere);
Строка два выдает исключение типа COMException со следующей информацией:
Система. Время выполнения. InteropServices. COMException был пойман
Сообщение = "Исключение из HRESULT: 0x80040202"
Источник = "mscorlib"
ErrorCode =-2147220990
StackTrace: в System. Время выполнения. InteropServices. ComTypes. IConnectionPoint. Советуйте (Возразите pUnkSink, Int32& pdwCookie),
У кого-либо есть какие-либо идеи, почему я не могу сцепиться в событие COM или если существует обходное решение для сцепления в события COM?
Chris
Вы получили код ошибки CONNECT_E_CANNOTCONNECT, что хорошо для Google. Это указывает на то, что COM-сервер недоволен вашей попыткой подписаться на обработчик событий. Вам нужно выяснить, почему это не так. Практически всегда требуется помощь автора или поставщика компонента.
Вы можете попробовать взглянуть на библиотеку типов с помощью Oleview.exe и выяснить, находится ли событие, на которое вы пытаетесь подписаться, на диспетчерском интерфейсе, помеченном как исходный интерфейс по умолчанию. Если это не так, попробуйте привести объект к типу диспетчерского интерфейса, а затем подпишитесь на его событие.
Проблема заключалась в том, что интерфейс для событий не был зарегистрирован. Как только я добавил раздел реестра для интерфейса событий, проблема была решена.Мне удалось получить информацию об идентификаторе интерфейса с помощью OLEViewer.exe