Classe Platform::Agile

Rappresenta un oggetto con MashalingBehavior=Standard come oggetto Agile, che riduce fortemente le probabilità che si verifichino eccezioni di threading di runtime. Agile<T> consente all'oggetto non Agile di chiamare o essere chiamato dallo stesso thread o da un thread differente. Per altre informazioni, vedere Threading e marshalling.

Sintassi

template <typename T>
class Agile;

Parametri

T
Typename per la classe non Agile.

Osservazioni:

La maggior parte delle classi in Windows Runtime è agile. Un oggetto Agile può chiamare o essere chiamato da un oggetto in-process o out-of-process nello stesso thread o in uno differente. Se un oggetto non è Agile, eseguire il wrapping dell'oggetto non Agile in un oggetto Agile<T> , che è Agile. Si può quindi eseguire il marshalling dell'oggetto Agile<T> e usare l'oggetto non Agile sottostante.

La classe Agile<T> è una classe C++ standard nativa e richiede agile.h. Rappresenta l'oggetto non Agile e il contestodell'oggetto Agile. Il contesto specifica il modello di threading e il comportamento di marshalling di un oggetto Agile. Il sistema operativo usa il contesto per determinare come eseguire il marshalling di un oggetto.

Membri

Costruttori pubblici

Nome Descrizione
Agile::Agile Inizializza una nuova istanza della classe Agile.
Distruttore Agile::~Agile Eliminata l'istanza corrente della classe Agile.

Metodi pubblici

Nome Descrizione
Agile::Get Restituisce un handle all'oggetto rappresentato dall'oggetto Agile corrente.
Agile::GetAddressOf Reinizializza l'oggetto Agile corrente e restituisce l'indirizzo di un handle a un oggetto di tipo T.
Agile::GetAddressOfForInOut Restituisce l'indirizzo di un handle all'oggetto rappresentato dall'oggetto Agile corrente.
Agile::Release Rimuove l'oggetto e il contesto sottostanti dell'oggetto Agile corrente.

Operatori pubblici

Nome Descrizione
Agile::operator-> Recupera un handle all'oggetto rappresentato dall'oggetto Agile corrente.
Agile::operator= Assegna il valore specificato all'oggetto Agile corrente.

Gerarchia di ereditarietà

Object

Agile

Requisiti

Client minimo supportato: Windows 8

Server minimo supportato: Windows Server 2012

Spazio dei nomi: Platform

Intestazione: agile.h

Costruttore Agile::Agile

Inizializza una nuova istanza della classe Agile.

Sintassi

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

Parametri

T
Tipo specificato dal parametro typename del modello.

object
Nella seconda versione di questo costruttore, oggetto utilizzato per inizializzare una nuova istanza Agile. Nella terza versione, oggetto copiato nella nuova istanza Agile. Nella quarta versione, oggetto spostato nella nuova istanza Agile.

Osservazioni:

La prima versione di questo costruttore rappresenta il costruttore predefinito. Nella seconda versione viene inizializzata la nuova classe Agile dell'istanza dall'oggetto specificato dal parametro object. La terza versione rappresenta il costruttore di copia. La quarta versione rappresenta il costruttore di spostamento. Questo costruttore non può generare eccezioni.

Distruttore Agile::~Agile

Eliminata l'istanza corrente della classe Agile.

Sintassi

~Agile();

Osservazioni:

Questo distruttore rilascia inoltre l'oggetto rappresentato dall'oggetto Agile corrente.

Metodo Agile::Get

Restituisce un handle all'oggetto rappresentato dall'oggetto Agile corrente.

Sintassi

T^ Get() const;

Valore restituito

Handle all'oggetto rappresentato dall'oggetto Agile corrente.

Il tipo di valore restituito effettivo è un tipo interno riservato. Un modo pratico per contenere il valore restituito consiste nell'assegnarlo a una variabile dichiarata con la parola chiave di deduzione del auto tipo. Ad esempio: auto x = myAgileTvariable->Get();.

Metodo Agile::GetAddressOf

Reinizializza l'oggetto Agile corrente e restituisce l'indirizzo di un handle a un oggetto di tipo T.

Sintassi

T^* GetAddressOf() throw();

Parametri

T
Tipo specificato dal parametro typename del modello.

Valore restituito

Indirizzo di un handle a un oggetto di tipo T.

Osservazioni:

Questa operazione rilascia la rappresentazione corrente di un oggetto di tipo T, se presente, reinizializza i membri dati dell'oggetto Agile, acquisisce il contesto di threading corrente e quindi restituisce l'indirizzo di una variabile handle-to-object che può rappresentare un oggetto non Agile. Per fare in modo che un'istanza di classe Agile rappresenti un oggetto, usare l'operatore di assegnazione (Agile::operator=) per assegnare l'oggetto all'istanza della classe Agile.

Metodo Agile::GetAddressOfForInOut

Restituisce l'indirizzo di un handle all'oggetto rappresentato dall'oggetto Agile corrente.

Sintassi

T^* GetAddressOfForInOut()  throw();

Parametri

T
Tipo specificato dal parametro typename del modello.

Valore restituito

Indirizzo di un handle all'oggetto rappresentato dall'oggetto Agile corrente.

Osservazioni:

Questa operazione acquisisce il contesto di threading corrente e successivamente restituisce l'indirizzo di un handle all'oggetto sottostante.

Metodo Agile::Release

Rimuove l'oggetto e il contesto sottostanti dell'oggetto Agile corrente.

Sintassi

void Release() throw();

Osservazioni:

Se esistono, l'oggetto e il contesto sottostanti dell'oggetto Agile corrente vengono rimossi, quindi il valore dell'oggetto Agile viene impostato su null.

Operatore Agile::operator->

Recupera un handle all'oggetto rappresentato dall'oggetto Agile corrente.

Sintassi

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

Valore restituito

Handle all'oggetto rappresentato dall'oggetto Agile corrente.

Questo operatore restituisce un tipo interno riservato. Un modo pratico per contenere il valore restituito consiste nell'assegnarlo a una variabile dichiarata con la parola chiave di deduzione del auto tipo.

Operatore Agile::operator=

Assegna l'oggetto specificato all'oggetto Agile corrente.

Sintassi

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();

Parametri

T
Tipo specificato dal typename del modello.

object
Oggetto o handle a un oggetto che viene copiato o spostato nell'oggetto Agile corrente.

Lp
Puntatore a interfaccia IUnknown di un oggetto.

Valore restituito

Handle a un oggetto di tipo T

Osservazioni:

La prima versione dell'operatore di assegnazione copia un handle a un tipo di riferimento all'oggetto Agile corrente. La seconda versione copia un riferimento a un tipo Agile all'oggetto Agile corrente. La terza versione sposta un tipo Agile all'oggetto Agile corrente. La quarta versione sposta un puntatore a un oggetto COM all'oggetto Agile corrente.

L'operazione di assegnazione rende automaticamente persistente il contesto dell'oggetto Agile corrente.

Vedi anche

Spazio dei nomi della piattaforma