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 T zurü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 T
zurü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.