Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WITHEVENTS, интерфейсы делегатов и COM, событие из COM в C# 
:(
    Опции темы
and42
Дата 15.11.2010, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 15.11.2010

Репутация: нет
Всего: нет



Уважаемые. Не могу нигде найти на форумах по интересующей теме.

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

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

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

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

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

Может кто то реализовывал подобное или хоть ссылочку плиз? Заранее благодарен.
PM MAIL   Вверх
mihryak
Дата 16.11.2010, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 3
Всего: 36



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

Это сообщение отредактировал(а) mihryak - 16.11.2010, 01:39
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0759 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.