Образец CONNECT: демонстрация реализации и использования точек подключения (образцы C++)
Обновлен: Ноябрь 2007
В этом образце показано использование и реализация точек подключения (интерфейсов IConnectionPointContainer и IConnectionPoint) в многопоточной среде.
Примечание. |
---|
Этот образец является модификацией образца ATL Connect и предназначен для демонстрации доступной в компиляторе поддержки COM для приемников точек подключения. Клиент Drive является собственной реализацией, а в клиенте MDrive корректность модели COM немного нарушается в отношении использования производства объектов классов для создания объектов-приемников. Поддержка COM в клиентах Drive и MDrive не зависит от ATL и MFC. |
Примечание о безопасности. |
---|
Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению. |
Чтобы получить образцы и инструкции по их установке, выполните следующие действия.
В меню Справка среды Visual Studio выберите пункт Примеры.
Дополнительные сведения см. в разделе Поиск файлов примеров.
Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.
Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.
Построение и запуск образца
Построение и запуск этого образца
Откройте решение connect.sln.
В меню Построение выберите команду Построить решение.
Выберите клиент для запуска (Drive или MDrive) и сделайте его запускаемым проектом (щелкните папку проекта правой кнопкой мыши и выберите команду Назначить запускаемым проектом). Дополнительные сведения о клиентах находятся в подразделе "Принцип работы образца".
В меню Отладка выберите пункт Запуск без отладки.
Принцип работы образца
Сервер реализован в файле Connect.dll. Эта библиотека DLL позволяет создать COM-объект CoRandom, реализованный в классе C++ CRandom. COM-объект поддерживает сдвоенный интерфейс IRandom и интерфейс IConnectionPointContainer, а также принимает подключения для интерфейса IRandomEvent.
Интерфейс IRandom поддерживает следующие методы.
Start. Запускает поток в пределах объекта.
Stop. Останавливает поток в пределах объекта.
StopAll. Останавливает все выполняющиеся потоки.
Вторичные потоки, работающие в пределах объекта, продолжают вызывать события через точку подключения.
Предоставляются два клиента: Drive и MDrive. Они находятся во вложенных каталогах Drive и MDrive.
Drive.exe является простым консольным приложением, которое предоставляет один объект, реализующий интерфейс IRandomEvent. Он создает объект CoRandom, вызывает методы Advise и Unadvise в точке подключения и с помощью объекта CoRandom передает события в объект Drive.
Mdrive.exe является приложением MFC, основанным на диалоговых окнах, которое может создавать несколько приемников уведомлений и управлять количеством потоков, создаваемых сервером. После запуска Mdrive.exe нажмите кнопку Start по крайней мере один раз, а затем несколько раз нажмите кнопку Advise. При каждом нажатии кнопки Advise добавляется точка подключения, в результате чего увеличивается ширина экрана. Если не нажать кнопку Advise, на экране не будет отображаться никаких действий.