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.