Classe Platform::Agile

Representa um objeto que tem um MashalingBehavior=Standard como um objeto Agile, que reduz a possibilidade de exceções de threading do runtime. O Agile<T> permite que o objeto não Agile chame ou seja chamado do mesmo thread ou de um thread diferente. Para obter mais informações, confira Threading e marshaling.

Sintaxe

template <typename T>
class Agile;

Parâmetros

T
O typename para a classe não Agile.

Comentários

A maioria das classes no Windows Runtime é Agile. Um objeto Agile pode chamar ou ser chamado por um objeto em processo ou fora de processo no mesmo thread ou em um thread diferente. Se um objeto não for Agile, encapsule o objeto não Agile em um objeto Agile<T> , que seja Agile. Em seguida, pode-se realizar marshaling do objeto Agile<T> e o objeto não Agile subjacente pode ser usado.

A classe Agile<T> é uma classe do C++ nativa e padrão e requer o agile.h. Representa o contextodo objeto não Agile e do objeto Agile. O contexto especifica um modelo de threading e comportamento de marshaling de um objeto Agile. O sistema operacional usa o contexto para determinar como realizar marshaling de um objeto.

Membros

Construtores públicos

Nome Descrição
Agile::Agile Inicializa uma nova instância da classe Agile.
Destruidor Agile::~Agile Destrói a instância atual da classe Agile.

Métodos públicos

Nome Descrição
Agile::Get Retorna um identificador para o objeto representado pelo objeto Agile atual.
Agile::GetAddressOf Reinicializa o objeto Agile atual e retorna o endereço de um identificador para um objeto do tipo T.
Agile::GetAddressOfForInOut Retorna o endereço de um identificador para o objeto representado pelo objeto Agile atual.
Agile::Release Descarta o objeto e o contexto subjacentes do objeto Agile atual.

Operadores públicos

Nome Descrição
Agile::operator-> Recupera um endereço de um identificador para o objeto representado pelo objeto Agile atual.
Agile::operator= Atribui o objeto especificado ao objeto Agile atual.

Hierarquia de herança

Object

Agile

Requisitos

Cliente com suporte mínimo: Windows 8

Servidor com suporte mínimo: Windows Server 2012

Namespace: Platform

Cabeçalho: agile.h

Construtor Agile::Agile

Inicializa uma nova instância da classe Agile.

Sintaxe

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

Parâmetros

T
Um tipo especificado pelo parâmetro typename do modelo.

object
Na segunda versão desse construtor, um objeto usado para inicializar uma nova instância de Agile. Na terceira versão, o objeto que é copiado para a nova instância de Agile. Na quarta versão, o objeto que é movido para a nova instância de Agile.

Comentários

A primeira versão desse construtor é o construtor padrão. A segunda versão inicializa a nova classe da instância de Agile do objeto especificado pelo parâmetro object. A terceira versão é o construtor de cópia. A quarta versão é o construtor de movimento. Esse construtor não pode gerar exceções.

Destruidor Agile::~Agile

Destrói a instância atual da classe Agile.

Sintaxe

~Agile();

Comentários

Este destruidor também libera o objeto representado pelo objeto Agile atual.

Método Agile::Get

Retorna um identificador para o objeto representado pelo objeto Agile atual.

Sintaxe

T^ Get() const;

Valor retornado

Um identificador para o objeto representado pelo objeto Agile atual.

O tipo do valor retornado é, de fato, um tipo interno não revelado. Uma forma conveniente de manter o valor retornado é atribuí-lo a uma variável declarada com a palavra-chave de dedução de tipo auto. Por exemplo, auto x = myAgileTvariable->Get();.

Método Agile::GetAddressOf

Reinicializa o objeto Agile atual e retorna o endereço de um identificador para um objeto do tipo T.

Sintaxe

T^* GetAddressOf() throw();

Parâmetros

T
Um tipo especificado pelo parâmetro typename do modelo.

Valor de retorno

O endereço de um identificador para um objeto do tipo T.

Comentários

Essa operação libera a representação atual de um objeto do tipo T, se houver, reinicializa os membros de dados do objeto Agile, adquire o contexto de threading atual e, em seguida, retorna o endereço de uma variável handle-to-object que pode representar um objeto não ágil. Para fazer com que uma instância da classe Agile represente um objeto, use o operador de atribuição (Agile::operator=) para atribuir o objeto à instância da classe Agile.

Método Agile::GetAddressOfForInOut

Retorna o endereço de um identificador para o objeto representado pelo objeto Agile atual.

Sintaxe

T^* GetAddressOfForInOut()  throw();

Parâmetros

T
Um tipo especificado pelo parâmetro typename do modelo.

Valor de retorno

O endereço de um identificador para o objeto representado pelo objeto Agile atual.

Comentários

Esta operação adquire o contexto de threading atual e retorna o endereço de um identificador para o objeto subjacente.

Método Agile::Release

Descarta o objeto e o contexto subjacentes do objeto Agile atual.

Sintaxe

void Release() throw();

Comentários

O objeto e o contexto subjacentes do objeto Agile atual serão descartados, caso existam, e o valor do objeto Agile será definido como nulo.

Operador Agile::operator->

Recupera um endereço de um identificador para o objeto representado pelo objeto Agile atual.

Sintaxe

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

Valor retornado

Um identificador para o objeto representado pelo objeto Agile atual.

Esse operador retorna, na verdade, um tipo interno não revelado. Uma forma conveniente de manter o valor retornado é atribuí-lo a uma variável declarada com a palavra-chave de dedução de tipo auto.

Operador Agile::operator=

Atribui o objeto especificado ao objeto Agile atual.

Sintaxe

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

Parâmetros

T
O tipo especificado pelo typename do modelo.

object
O objeto ou o identificador de um objeto que é copiado ou movido para o objeto Agile atual.

LP
O ponteiro de interface de IUnknown de um objeto.

Valor de retorno

Um identificador para um objeto do tipo T

Comentários

A primeira versão do operador de atribuição copia um identificador para um tipo de referência para o objeto Agile atual. A segunda versão copia uma referência a um tipo Agile para o objeto Agile atual. A terceira versão move um tipo Agile para o objeto Agile atual. A quarta versão move um ponteiro para um objeto COM para o objeto Agile atual.

A operação de atribuição persiste automaticamente o contexto do objeto Agile atual.

Confira também

Namespace de Plataforma