Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > WITHEVENTS, интерфейсы делегатов и COM


Автор: and42 15.11.2010, 12:20
Уважаемые. Не могу нигде найти на форумах по интересующей теме.

Есть сторонний СОМ, у которого объявлены куча интерфейсов и есть интерфейс в виде делегата, который соответствует событию некоторого объекта этого COM, который явно виден в проекте С#, после объявления в Reference и создания new(экземпляра) этого объекта. Этот делегат связан с классом объекта этого COMа. 

Что бы не смешивать все в одно, попробую разделить на два подвопроса.

1. Ранее я использовал эти события в VB(A) сравнительно легко. Чтобы использовать как то метод  нужного события я создавал переменную WithEvents типа этого обьекта, те с событием. Затем назначал соответствие этой переменной контролируему объекту такого же типа командой Set. Тогда у этой объявленной переменной появлялся и необходимый мне метод-обработчик, и другие методы событий подконтрольного обьекта.  При нужном мне событии в объекте, этот метод обрабатывался в нашей переменной. Конечно понимаю, вся эта простота реализуется закрыто, и прямого аналога в C# нет. Отсюда первый вопрос. Есть ли у кого реальный пример, вообще как реализовать WithEvents в C#? Хотя бы без СОМ? Хотя подозреваю, что это классическое использование делегата.

2. Но вот то же самое с использованием COM интерфейса в C# для меня полная непонятка. Подозреваю, что здесь все гораздо сложнее. Те инициатор события в COM где то там (в другом приложении) и от его интерфейса есть только объявленный интерфейс типа делегат, а обработчик нужен в моем классе? Про делегаты прочитал на десять раз, и про класс с методом тоже как то хоть с трудом, но укладывается. Но вот как связать реальный обект "там" и здесь. smile  Например в другом приложении есть объект Object_Name. И унего есть событие класса Object.ChangeValue, который в проекте С# через COM я вижу как интерфейс . Так вот как от этого события поиметь выполнение моего метода в моем классе?

Уфф, кажется ничего не напутал... smile 

Может кто то реализовывал подобное или хоть ссылочку плиз? Заранее благодарен.

Автор: mihryak 16.11.2010, 01:39
честно говоря, мало чего понял, хотя набор ключевых слов не предвещает больших сложностей, и с плюсы в дотнете нормально делегаты передаются, с com-ом не должно быть проблем
если можешь - выложи свой ком с более подробным и более близким к коду описанием, что требуется сделать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)