Platform::Agile-Klasse

Stellt ein Objekt dar, das über „MashalingBehavior=Standard“ als Agile-Objekt verfügt, das die Chancen für Threadingausnahmen zur Laufzeit erheblich verringert. Agile<T> ermöglicht es dem Nicht-Agile-Objekt, denselben oder einen anderen Thread aufzurufen oder von diesem aufgerufen zu werden. Weitere Informationen finden Sie unter Threading und Marshaling.

Syntax

template <typename T>
class Agile;

Parameter

T
Der Typname für die Nicht-Agile-Klasse.

Hinweise

Die meisten Klassen in der Windows-Runtime sind agil. Ein Agile-Objekt kann ein „in-proc“- oder „out-of-proc“-Objekt in demselben oder einem anderen Thread aufrufen oder von diesem aufgerufen werden. Wenn es sich nicht um ein Agile-Objekt handelt, schließen Sie das Nicht-Agile-Objekt in ein Agile<T> -Objekt ein, das agil ist. Dann kann das Agile<T> -Objekt gemarshallt und das zugrunde liegende Nicht-Agile-Objekt verwendet werden.

Die Agile<T> -Klasse ist eine systemeigene C++-Standardklasse und erfordert agile.h. Es stellt das Nicht-Agile-Objekt und den Kontextdes Agile-Objekts dar. Der Kontext gibt das Threadmodell und Marshallingverhalten eines Agile-Objekts an. Das Betriebssystem verwendet den Kontext, um zu ermitteln, wie ein Objekt gemarshallt wird.

Member

Öffentliche Konstruktoren

Name Beschreibung
Agile::Agile Initialisiert eine neue Instanz der Agile-Klasse.
Agile::~Agile-Destruktor Zerstört die aktuelle Instanz der Agile-Klasse.

Öffentliche Methoden

Name Beschreibung
Agile::Get Gibt den Handle auf das Objekt zurück, das vom aktuellen Agile-Objekt dargestellt wird.
Agile::GetAddressOf Initialisiert das aktuelle Agile-Objekt neu und gibt dann die Adresse eines Handles für ein Objekt vom Typ Tzurück.
Agile::GetAddressOfForInOut Gibt die Adresse eines Handles zum Objekt zurück, das vom aktuellen Agile-Objekt dargestellt wird.
Agile::Release Verwirft das Objekt und den Kontext, die dem aktuellen Agile-Objekt zugrunde liegen.

Öffentliche Operatoren

Name Beschreibung
Agile::operator-> Ruft ein Handle auf das Objekt ab, das vom aktuellen Agile-Objekt dargestellt wird.
Agile::operator= Weist dem aktuellen Agile-Objekt den angegebenen Wert zu.

Vererbungshierarchie

Object

Agile

Anforderungen

Mindestens unterstützter Client: Windows 8

Mindestens unterstützter Server: Windows Server 2012

Namespace: Platform

Header: agile.h

Agile::Agile-Konstruktor

Initialisiert eine neue Instanz der Agile-Klasse.

Syntax

Agile();
Agile(T^ object);
Agile(const Agile<T>& object);
Agile(Agile<T>&& object);

Parameter

T
Ein Typ, der durch den Typnamenparameter der Vorlage spezifiziert wird.

object
In der zweiten Version dieses Konstruktors wird ein Objekt verwendet, um eine neue Agile-Instanz zu initialisieren. In der dritten Version das Objekt, das zur neuen Agile-Instanz kopiert wird. In der vierten Version das Objekt, das zur neuen Agile-Instanz verschoben wird.

Hinweise

Die erste Version dieses Konstruktors ist der Standardkonstruktor. Die zweite Version initialisiert eine neue Agile-Instanzklasse aus dem Objekt, das durch den object-Parameter spezifiziert wird. Die dritte Version ist der Kopierkonstruktor. Die vierte Version ist der Verschiebungskonstruktor. Dieser Konstruktor kann keine Ausnahmen auslösen.

Agile::~Agile-Destruktor

Zerstört die aktuelle Instanz der Agile-Klasse.

Syntax

~Agile();

Hinweise

Dieser Destruktor gibt auch das Objekt frei, das vom aktuellen Agile-Objekt dargestellt wird.

Agile::Get-Methode

Gibt den Handle auf das Objekt zurück, das vom aktuellen Agile-Objekt dargestellt wird.

Syntax

T^ Get() const;

Rückgabewert

Ein Handle auf das Objekt, das vom aktuellen Agile-Objekt dargestellt wird.

Der Typ des Rückgabewerts ist eigentlich ein nicht genannter interner Typ. Eine bequeme Möglichkeit zum Halten des Rückgabewerts besteht darin, ihn einer Variablen zuzuweisen, die mit dem auto Schlüsselwort "Typeabzug" deklariert wird. Beispiel: auto x = myAgileTvariable->Get();.

Agile::GetAddressOf-Methode

Initialisiert das aktuelle Agile-Objekt neu und gibt dann die Adresse eines Handles für ein Objekt vom Typ Tzurück.

Syntax

T^* GetAddressOf() throw();

Parameter

T
Ein Typ, der durch den Typnamenparameter der Vorlage spezifiziert wird.

Rückgabewert

Die Adresse eines Handles für ein Objekt des Typs T

Hinweise

Bei diesem Vorgang wird die aktuelle Darstellung eines Objekts vom Typ T,, falls vorhanden, freigegeben. Reitialisiert die Datenmember des Agile-Objekts, ruft den aktuellen Threadingkontext ab und gibt dann die Adresse einer Handle-to-Object-Variable zurück, die ein nicht agiles Objekt darstellen kann. Damit eine Agile-Klasseninstanz ein Objekt darstellt, verwenden Sie den Zuordnungsoperator (Agile::operator=), um das Objekt der Agile-Klasseninstanz zuzuweisen.

Agile::GetAddressOfForInOut-Methode

Gibt die Adresse eines Handles zum Objekt zurück, das vom aktuellen Agile-Objekt dargestellt wird.

Syntax

T^* GetAddressOfForInOut()  throw();

Parameter

T
Ein Typ, der durch den Typnamenparameter der Vorlage spezifiziert wird.

Rückgabewert

Die Adresse eines Handles zum Objekt, das vom aktuellen Agile-Objekt dargestellt wird.

Hinweise

Durch diesen Vorgang wird der aktuelle Threadingkontext abgerufen und dann die Adresse eines Handles zum zugrunde liegenden Objekt zurückgegeben.

Agile::Release-Methode

Verwirft das Objekt und den Kontext, die dem aktuellen Agile-Objekt zugrunde liegen.

Syntax

void Release() throw();

Hinweise

Das Objekt und der Kontext, die dem aktuellen Agile-Objekt zugrunde liegen, werden verworfen, falls sie vorhanden sind. Anschließend wird der Wert des Agile-Objekts auf Null gesetzt.

Agile::operator->-Operator

Ruft ein Handle auf das Objekt ab, das vom aktuellen Agile-Objekt dargestellt wird.

Syntax

T^ operator->() const throw();

Rückgabewert

Ein Handle auf das Objekt, das vom aktuellen Agile-Objekt dargestellt wird.

Dieser Operator gibt tatsächlich einen nicht veröffentlichten internen Typ zurück. Eine bequeme Möglichkeit zum Halten des Rückgabewerts besteht darin, ihn einer Variablen zuzuweisen, die mit dem auto Schlüsselwort "Typeabzug" deklariert wird.

Agile::operator=-Operator

Weist das angegebene Objekt dem aktuellen Agile-Objekt zu.

Syntax

Agile<T> operator=( T^ object ) throw();
Agile<T> operator=( const Agile<T>& object ) throw();
Agile<T> operator=( Agile<T>&& object ) throw();
T^ operator=( IUnknown* lp ) throw();

Parameter

T
Der durch den Vorlagentypnamen spezifizierte Typ.

object
Das Objekt oder das Handle für ein Objekt, das auf das aktuelle Agile-Objekt kopiert oder verschoben wird.

Lp
Der IUnknown-Schnittstellenzeiger eines Objekts.

Rückgabewert

Ein Handle für ein Objekt des Typs T

Hinweise

Die erste Version des Zuweisungsoperators kopiert ein Handle für einen Verweistyp zum aktuellen Agile-Objekt. Die zweite Version kopiert einen Verweis zu einem Agile-Typ zum aktuellen Agile-Objekt. Die dritte Version verschiebt einen Agile-Typ zum aktuellen Agile-Objekt. Die vierte Version verschiebt einen Zeiger auf ein COM-Objekt zum aktuellen Agile-Objekt.

Der Zuweisungsvorgang speichert automatisch den Kontext des aktuellen Agile-Objekts.

Siehe auch

Plattformnamespace