CONNECT-Beispiel: Veranschaulicht die Implementierung und Verwendung von Verbindungspunkten (C++-Beispiele)
Aktualisiert: November 2007
Dieses Beispiel veranschaulicht die Verwendung und Implementierung von Verbindungspunkten (die IConnectionPointContainer-Schnittstelle und die IConnectionPoint-Schnittstelle) in einer Multithreadumgebung.
Hinweis: |
---|
Dieses Beispiel ist eine Änderung des ATL-Beispiels Connect zum Demonstrieren der COM-Unterstützung des Compilers für Verbindungspunktempfänger. Der Drive-Client ist eine systemeigene Implementierung, während der MDrive-Client etwas übertrieben genau nach den Prinzipien von COM verfährt, da er eine ClassFactory zum Erstellen von Empfängerobjekten verwendet. Weder Drive noch MDrive sind von der COM-Unterstützung für ATL oder MFC abhängig. |
Sicherheitshinweis: |
---|
Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird. |
So rufen Sie Beispiele und Anweisungen für ihre Installation ab
Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.
Weitere Informationen finden Sie unter Suchen von Beispieldateien.
Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.
Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.
Erstellen und Ausführen des Beispiels
So erstellen Sie dieses Beispiel und führen es aus
Öffnen Sie die Projektmappe connect.sln.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Wählen Sie den auszuführenden Client (Drive oder MDrive) aus, und richten Sie ihn als Startprojekt ein. (Klicken Sie dazu mit der rechten Maustaste auf den Projektordner, und klicken Sie auf Als Startprojekt festlegen.) Weitere Informationen zu den Clients finden Sie im Abschnitt "So funktioniert das Beispiel".
Klicken Sie im Menü Debuggen auf Starten ohne Debuggen.
So funktioniert das Beispiel
Der Server wird in der Connect.dll implementiert. Mit dieser DLL können Sie ein CoRandom-COM-Objekt erstellen, das von der CRandom-C++-Klasse implementiert wird. Das COM-Objekt unterstützt IRandom (eine duale Schnittstelle) und IConnectionPointContainer. Es akzeptiert außerdem Verbindungen für die IRandomEvent-Schnittstelle.
Die IRandom-Schnittstelle unterstützt die folgenden Methoden:
Start Startet einen Thread innerhalb des Objekts.
Stop Beendet einen Thread innerhalb des Objekts.
StopAll Beendet alle aktiven Threads.
Bei der Ausführung lösen die sekundären Threads innerhalb des Objekts Ereignisse durch den Verbindungspunkt aus.
Es werden zwei Clients zur Verfügung gestellt: Drive und Mdrive. Sie befinden sich in den Unterverzeichnissen Drive und Mdrive.
Drive.exe ist eine einfache Konsolenanwendung, die ein einzelnes Objekt zur Implementierung der IRandomEvent-Schnittstelle zur Verfügung stellt. Sie erstellt ein CoRandom-Objekt, ruft Advise und Unadvise für den Verbindungspunkt auf und lässt das CoRandom-Objekt Ereignisse auslösen, die in das Laufwerksobjekt geleitet werden.
Mdrive.exe ist eine auf Dialogfeldern basierende MFC-Anwendung, die mehrere Advise-Empfänger erstellen und die vom Server erstellte Anzahl der Threads steuern kann. Wenn Sie Mdrive.exe ausführen, klicken Sie mindestens einmal auf die Schaltfläche Start und mehrfach auf die Schaltfläche Advise. Bei jedem Klicken auf die Schaltfläche Advise wird ein Verbindungspunkt hinzugefügt, wodurch der Anzeigebereich verbreitert wird. Wenn Sie nicht auf die Schaltfläche Advise klicken, werden in der Anzeige keine Aktivitäten angezeigt.