Sdílet prostřednictvím


Beispiel für AutoThread-Attribute: Demonstriert die Verwendung von "CAtlAutoThreadModule"

Aktualisiert: November 2007

Das AutoThread-Beispiel demonstriert die Verwendung von CAtlAutoThreadModule. Der Server ist in der Datei Server.exe implementiert. Das Modul der EXE-Datei ist nicht von CComModule, sondern von CAtlAutoThreadModule abgeleitet.

Das AutoThread-Beispiel ist die attributierte Version dieses Beispiels.

29eewbfh.alert_security(de-de,VS.90).gifSicherheitshinweis:

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.

So erstellen Sie dieses Beispiel und führen es aus

  1. Öffnen Sie die Projektmappendatei AutoThread.sln.

  2. Klicken Sie im Menü Erstellen auf Projektmappe erstellen. Dadurch werden der Client und der Server erstellt und registriert.

  3. Starten Sie zwei Instanzen des Testcontainers für ActiveX-Steuerelemente. Informationen zum Zugreifen auf den Testcontainer finden Sie unter Testen von Eigenschaften und Ereignissen mit dem Testcontainer.

  4. Fügen Sie in jeden Testcontainer ein Clientsteuerelement (CAutoCtl-Klasse) ein.

  5. Wenn Sie nun auf eines der Steuerelemente klicken, dauert es in etwa eine Sekunde, bis der Server wieder aktiviert wird.

  6. Ändern Sie die Position und die Größe der Testcontainer so, dass beide gleichzeitig angezeigt werden.

  7. Klicken Sie auf eines der Steuerelemente und dann schnell auf das andere. Die Beendigung der Inaktivität erfolgt für beide ungefähr zur gleichen Zeit. (Ohne die Verwendung von CComAutoThreadModule würde das erste Steuerelement nach einer Sekunde inaktiv werden, das zweite würde jedoch erst eine Sekunde nach Beendigung des ersten inaktiv werden. Der zweite Aufruf für den Ruhezustand würde erst nach Beendigung des ersten gestartet werden.) Mithilfe der Delay(PropGet)-Methode und der Delay(PropPut)-Methode können Sie die Dauer der Inaktivität des Servers anpassen (in Millisekunden). Wenn dieser richtig eingestellt ist, kann der zweite Aufruf für den Ruhezustand vor dem ersten zurückgegeben werden.

So funktioniert das Beispiel

Die Serverschnittstelle verfügt über eine einzige Methode: Sleep. Diese Methode versetzt den Serverthread für einen bestimmten Zeitraum in den Ruhezustand. Der Clientbereich des Beispiels ist ein ActiveX-Steuerelement, das die Sleep-Methode des Servers aufruft, wenn die Benutzer darauf klicken. Dieser Client hat die Eigenschaft Delay, die bestimmt, wie lange der Serverthread im Ruhezustand verweilen wird. Wenn auf das Steuerelement geklickt werden kann, wird "Bereit" angezeigt. Solange das Steuerelement auf das Ende des Ruhezustands des Servers wartet, wird "Warten" angezeigt.

Attribute

In diesem Beispiel werden die folgenden Attribute verwendet:

  • AutoThread/AutoClient:   coclass, dual, emitidl, helpstring, id, in, module, object, out, pointer_default, progid, propget, propput, registration_script, retval, threading, uuid, version, vi_progid

  • AutoThread/AutoServer:   coclass, dual, emitidl, helpstring, id, module, object, pointer_default, progid, threading, uuid, version, vi_progid

Schlüsselwörter

In diesem Beispiel werden die folgenden Schlüsselwörter verwendet:

AtlGetObjectSourceInterface; BEGIN_SINK_MAP; CoCreateInstance; DECLARE_CLASSFACTORY_SINGLETON; IDispEventSimpleImpl::DispEventAdvise; END_SINK_MAP; IConnectionPointContainerImpl; IConnectionPointImpl; IDispEventImpl; OLE2CT; SINK_ENTRY_EX; SysAllocString; USES_CONVERSION; VARIANT; VariantClear; VariantCopy

29eewbfh.alert_note(de-de,VS.90).gifHinweis:

In diesem und einigen anderen Beispielen wurden die Änderungen an den Visual C++-Assistenten, -Bibliotheken und -Compilern noch nicht nachvollzogen. Sie demonstrieren aber dennoch, wie Sie die gewünschte Aufgabe durchführen können.

Siehe auch

Weitere Ressourcen

ATL-Attributbeispiele