Partilhar via


Classe AsyncBase

Implementa o computador de estado assíncrono do Windows Runtime.

Sintaxe

template <
    typename TComplete,
    typename TProgress = Details::Nil,
    AsyncResultType resultType = SingleResult
>
class AsyncBase : public AsyncBase<TComplete, Details::Nil, resultType>;

template <typename TComplete, AsyncResultType resultType>
class AsyncBase<TComplete, Details::Nil, resultType> :
    public Microsoft::WRL::Implements<IAsyncInfo>;

Parâmetros

TComplete
Um manipulador de eventos que é chamado quando uma operação assíncrona é concluída.

TProgress
Um manipulador de eventos que é chamado quando uma operação assíncrona em execução relata o progresso atual da operação.

resultType
Um dos valores da enumeração AsyncResultType. Por padrão, SingleResult.

Membros

Construtores públicos

Nome Descrição
AsyncBase::AsyncBase Inicializa uma instância da classe AsyncBase.

Métodos públicos

Nome Descrição
AsyncBase::Cancel Cancela uma operação assíncrona.
AsyncBase::Close Fecha a operação assíncrona.
AsyncBase::FireCompletion Invoca o manipulador de eventos de conclusão ou redefine o delegado de progresso interno.
AsyncBase::FireProgress Invoca o manipulador de eventos de progresso atual.
AsyncBase::get_ErrorCode Recupera o código de erro para a operação assíncrona atual.
AsyncBase::get_Id Recupera o código de erro da operação assíncrona atual.
AsyncBase::get_Status Recupera um valor que indica o status da operação assíncrona.
AsyncBase::GetOnComplete Copia o endereço do manipulador de eventos de conclusão atual para a variável especificada.
AsyncBase::GetOnProgress Copia o endereço do manipulador de eventos de progresso atual para a variável especificada.
AsyncBase::put_Id Define o código de erro da operação assíncrona atual.
AsyncBase::PutOnComplete Define o endereço do manipulador de eventos de conclusão para o valor especificado.
AsyncBase::PutOnProgress Define o endereço do manipulador de eventos de progresso para o valor especificado.

Métodos protegidos

Nome Descrição
AsyncBase::CheckValidStateForDelegateCall Testa se as propriedades delegadas podem ser modificadas no estado assíncrono atual.
AsyncBase::CheckValidStateForResultsCall Testa se os resultados de uma operação assíncrona podem ser coletados no estado assíncrono atual.
AsyncBase::ContinueAsyncOperation Determina se a operação assíncrona deve continuar processando ou ser interrompida.
AsyncBase::CurrentStatus Recupera o status da operação assíncrona atual.
AsyncBase::ErrorCode Recupera o código de erro para a operação assíncrona atual.
AsyncBase::OnCancel Quando substituído em uma classe derivada, cancela uma operação assíncrona.
AsyncBase::OnClose Quando substituído em uma classe derivada, fecha uma operação assíncrona.
AsyncBase::OnStart Quando substituído em uma classe derivada, inicia uma operação assíncrona.
AsyncBase::Start Inicia a operação assíncrona.
AsyncBase::TryTransitionToCompleted Indica se a operação assíncrona atual foi concluída.
AsyncBase::TryTransitionToError Indica se o código de erro especificado pode modificar o estado de erro interno.

Hierarquia de herança

AsyncBase

AsyncBase

Requisitos

Cabeçalho: async.h

Namespace: Microsoft::WRL

AsyncBase::AsyncBase

Inicializa uma instância da classe AsyncBase.

AsyncBase();

AsyncBase::Cancel

Cancela uma operação assíncrona.

STDMETHOD(
   Cancel
)(void);

Valor de retorno

Por padrão, sempre retorna S_OK.

Comentários

Cancel() é uma implementação padrão de IAsyncInfo::Cancel e não faz nenhum trabalho real. Para cancelar uma operação assíncrona, substitua o método virtual puro OnCancel().

AsyncBase::CheckValidStateForDelegateCall

Testa se as propriedades delegadas podem ser modificadas no estado assíncrono atual.

inline HRESULT CheckValidStateForDelegateCall();

Valor de retorno

S_OK se as propriedades delegadas puderem ser modificadas; caso contrário, E_ILLEGAL_METHOD_CALL.

AsyncBase::CheckValidStateForResultsCall

Testa se os resultados de uma operação assíncrona podem ser coletados no estado assíncrono atual.

inline HRESULT CheckValidStateForResultsCall();

Valor de retorno

S_OK se os resultados puderem ser coletados; caso contrário, E_ILLEGAL_METHOD_CALLE_ILLEGAL_METHOD_CALL.

AsyncBase::Close

Fecha a operação assíncrona.

STDMETHOD(
   Close
)(void) override;

Valor de retorno

S_OK se a operação fechar ou já estiver fechada; caso contrário, E_ILLEGAL_STATE_CHANGE.

Comentários

Close() é uma implementação padrão de IAsyncInfo::Close e não faz nenhum trabalho real. Para fechar uma operação assíncrona, substitua o método virtual puro OnClose().

AsyncBase::ContinueAsyncOperation

Determina se a operação assíncrona deve continuar processando ou ser interrompida.

inline bool ContinueAsyncOperation();

Valor de retorno

true se o estado atual da operação assíncrona for iniciado, o que significa que a operação deve continuar. Caso contrário, false, que significa que a operação deve ser interrompida.

AsyncBase::CurrentStatus

Recupera o status da operação assíncrona atual.

inline void CurrentStatus(
   Details::AsyncStatusInternal *status
);

Parâmetros

status
O local onde essa operação armazena o status atual.

Comentários

Essa operação é thread-safe.

AsyncBase::ErrorCode

Recupera o código de erro para a operação assíncrona atual.

inline void ErrorCode(
   HRESULT *error
);

Parâmetros

error
O local onde essa operação armazena o código de erro atual.

Comentários

Essa operação é thread-safe.

AsyncBase::FireCompletion

Invoca o manipulador de eventos de conclusão ou redefine o delegado de progresso interno.

void FireCompletion(
   void
) override;

virtual void FireCompletion();

Comentários

A primeira versão de FireCompletion() redefine a variável de delegado de progresso. A segunda versão invocará o manipulador de eventos de conclusão se a operação assíncrona estiver concluída.

AsyncBase::FireProgress

Invoca o manipulador de eventos de progresso atual.

void FireProgress(
   const typename ProgressTraits::Arg2Type arg
);

Parâmetros

arg
O método manipulador de eventos a ser invocado.

Comentários

ProgressTraits é derivado da estrutura ArgTraitsHelper.

AsyncBase::get_ErrorCode

Recupera o código de erro para a operação assíncrona atual.

STDMETHOD(
   get_ErrorCode
)(HRESULT* errorCode) override;

Parâmetros

errorCode
O local onde o código de erro atual é armazenado.

Valor de retorno

S_OK se tiver êxito; caso contrário, E_ILLEGAL_METHOD_CALL se a operação assíncrona atual for fechada.

AsyncBase::get_Id

Recupera o código de erro da operação assíncrona atual.

STDMETHOD(
   get_Id
)(unsigned int *id) override;

Parâmetros

id
O local onde o identificador deve ser armazenado.

Valor de retorno

S_OK se tiver êxito; caso contrário, E_ILLEGAL_METHOD_CALL.

Comentários

Esse método implementa IAsyncInfo::get_Id.

AsyncBase::get_Status

Recupera um valor que indica o status da operação assíncrona.

STDMETHOD(
   get_Status
)(AsyncStatus *status) override;

Parâmetros

status
O local onde o status deve ser armazenado. Para obter mais informações, confira a enumeração Windows::Foundation::AsyncStatus.

Valor de retorno

S_OK se tiver êxito; caso contrário, E_ILLEGAL_METHOD_CALL.

Comentários

Esse método implementa IAsyncInfo::get_Status.

AsyncBase::GetOnComplete

Copia o endereço do manipulador de eventos de conclusão atual para a variável especificada.

STDMETHOD(
   GetOnComplete
)(TComplete** completeHandler);

Parâmetros

completeHandler
O local em que o endereço do manipulador de eventos de conclusão atual é armazenado.

Valor de retorno

S_OK se tiver êxito; caso contrário, E_ILLEGAL_METHOD_CALL.

AsyncBase::GetOnProgress

Copia o endereço do manipulador de eventos de progresso atual para a variável especificada.

STDMETHOD(
   GetOnProgress
)(TProgress** progressHandler);

Parâmetros

progressHandler
O local em que o endereço do manipulador de eventos de progresso atual é armazenado.

Valor de retorno

S_OK se tiver êxito; caso contrário, E_ILLEGAL_METHOD_CALL.

AsyncBase::OnCancel

Quando substituído em uma classe derivada, cancela uma operação assíncrona.

virtual void OnCancel(
   void
) = 0;

AsyncBase::OnClose

Quando substituído em uma classe derivada, fecha uma operação assíncrona.

virtual void OnClose(
   void
) = 0;

AsyncBase::OnStart

Quando substituído em uma classe derivada, inicia uma operação assíncrona.

virtual HRESULT OnStart(
   void
) = 0;

AsyncBase::put_Id

Define o código de erro da operação assíncrona atual.

STDMETHOD(
   put_Id
)(const unsigned int id);

Parâmetros

id
Um identificador diferente de zero.

Valor de retorno

S_OK se tiver êxito; caso contrário, E_INVALIDARG ou E_ILLEGAL_METHOD_CALL.

AsyncBase::PutOnComplete

Define o endereço do manipulador de eventos de conclusão para o valor especificado.

STDMETHOD(
   PutOnComplete
)(TComplete* completeHandler);

Parâmetros

completeHandler
O endereço para o qual o manipulador de eventos de conclusão está definido.

Valor de retorno

S_OK se tiver êxito; caso contrário, E_ILLEGAL_METHOD_CALL.

AsyncBase::PutOnProgress

Define o endereço do manipulador de eventos de progresso para o valor especificado.

STDMETHOD(
   PutOnProgress
)(TProgress* progressHandler);

Parâmetros

progressHandler
O endereço para o qual o manipulador de eventos de progresso está definido.

Valor de retorno

S_OK se tiver êxito; caso contrário, E_ILLEGAL_METHOD_CALL.

AsyncBase::Start

Inicia a operação assíncrona.

STDMETHOD(
   Start
)(void);

Valor de retorno

S_OK se a operação iniciar ou já estiver iniciada; caso contrário, E_ILLEGAL_STATE_CHANGE.

Comentários

Start() é um método protegido que não é visível externamente porque as operações assíncronas "iniciam" antes de retornar ao chamador.

AsyncBase::TryTransitionToCompleted

Indica se a operação assíncrona atual foi concluída.

bool TryTransitionToCompleted(
   void
);

Valor de retorno

true se a operação assíncrona foi concluída; caso contrário, false.

AsyncBase::TryTransitionToError

Indica se o código de erro especificado pode modificar o estado de erro interno.

bool TryTransitionToError(
   const HRESULT error
);

Parâmetros

error
Um erro HRESULT.

Valor de retorno

true se o estado de erro interno foi alterado; caso contrário, false.

Comentários

Essa operação modifica o estado de erro somente se o estado de erro já estiver definido como S_OK. Essa operação não terá efeito se o estado de erro já for erro, cancelado, concluído ou fechado.