Compartir a través de


AsyncBase (clase)

Implementa la máquina de estados asincrónica de Windows Runtime.

Sintaxis

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
Controlador de eventos al que se llama cuando se completa una operación asincrónica.

TProgress
Un controlador de eventos al que se llama cuando una operación asincrónica en ejecución notifica el progreso actual de la operación.

resultType
Uno de los valores de la enumeración AsyncResultType. De forma predeterminada, SingleResult.

Miembros

Constructores públicos

Nombre Descripción
AsyncBase::AsyncBase Inicializa una instancia de la clase AsyncBase.

Métodos públicos

Nombre Descripción
AsyncBase::Cancel Cancela una operación asincrónica.
AsyncBase::Close Cierra la operación asincrónica.
AsyncBase::FireCompletion Invoca el controlador de eventos de finalización o restablece el delegado de progreso interno.
AsyncBase::FireProgress Invoca el controlador de eventos de progreso actual.
AsyncBase::get_ErrorCode Recupera el código de error de la operación asincrónica actual.
AsyncBase::get_Id Recupera el controlador de la operación asincrónica.
AsyncBase::get_Status Recupera un valor que indica el estado de la operación asincrónica.
AsyncBase::GetOnComplete Copia la dirección del controlador de eventos de finalización actual en la variable especificada.
AsyncBase::GetOnProgress Copia la dirección del controlador de eventos de progreso actual en la variable especificada.
AsyncBase::put_Id Establece el controlador de la operación asincrónica.
AsyncBase::PutOnComplete Establece la dirección del controlador de eventos de finalización en el valor especificado.
AsyncBase::PutOnProgress Establece la dirección del controlador de eventos de progreso en el valor especificado.

Métodos protegidos

Nombre Descripción
AsyncBase::CheckValidStateForDelegateCall Comprueba si las propiedades del delegado se pueden modificar en el estado asincrónico actual.
AsyncBase::CheckValidStateForResultsCall Comprueba si los resultados de una operación asincrónica se pueden recopilar en el estado asincrónico actual.
AsyncBase::ContinueAsyncOperation Determina si la operación asincrónica debe continuar procesándose o debe detenerse.
AsyncBase::CurrentStatus Recupera el estado de la operación asincrónica actual.
AsyncBase::ErrorCode Recupera el código de error de la operación asincrónica actual.
AsyncBase::OnCancel Si se reemplaza en una clase derivada, cancela una operación asincrónica.
AsyncBase::OnClose Si se reemplaza en una clase derivada, cancela una operación asincrónica.
AsyncBase::OnStart Si se reemplaza en una clase derivada, cancela una operación asincrónica.
AsyncBase::Start Inicia la operación asincrónica.
AsyncBase::TryTransitionToCompleted Indica si se ha completado la operación asincrónica actual.
AsyncBase::TryTransitionToError Indica si el código de error especificado puede modificar el estado de error interno.

Jerarquía de herencia

AsyncBase

AsyncBase

Requisitos

Encabezado: async.h

Espacio de nombres: Microsoft::WRL

AsyncBase::AsyncBase

Inicializa una instancia de la clase AsyncBase.

AsyncBase();

AsyncBase::Cancel

Cancela una operación asincrónica.

STDMETHOD(
   Cancel
)(void);

Valor devuelto

De forma predeterminada, siempre devuelve S_OK.

Comentarios

Cancel() es una implementación predeterminada de IAsyncInfo::Cancel y no funciona de forma real. Para cancelar realmente una operación asincrónica, invalide el método virtual puro OnCancel().

AsyncBase::CheckValidStateForDelegateCall

Comprueba si las propiedades del delegado se pueden modificar en el estado asincrónico actual.

inline HRESULT CheckValidStateForDelegateCall();

Valor devuelto

S_OK si se pueden modificar las propiedades del delegado; de lo contrario, E_ILLEGAL_METHOD_CALL.

AsyncBase::CheckValidStateForResultsCall

Comprueba si los resultados de una operación asincrónica se pueden recopilar en el estado asincrónico actual.

inline HRESULT CheckValidStateForResultsCall();

Valor devuelto

S_OK si se pueden recopilar los resultados; de lo contrario, E_ILLEGAL_METHOD_CALLE_ILLEGAL_METHOD_CALL.

AsyncBase::Close

Cierra la operación asincrónica.

STDMETHOD(
   Close
)(void) override;

Valor devuelto

S_OK si la operación se cierra o ya está cerrada; de lo contrario, E_ILLEGAL_STATE_CHANGE.

Comentarios

Close() es una implementación predeterminada de IAsyncInfo::Close y no funciona de forma real. Para cerrar realmente una operación asincrónica, invalide el método virtual puro OnClose().

AsyncBase::ContinueAsyncOperation

Determina si la operación asincrónica debe continuar procesándose o debe detenerse.

inline bool ContinueAsyncOperation();

Valor devuelto

true si el estado actual de la operación asíncrona es iniciado, lo que significa que la operación debe continuar. De lo contrario, false, lo que significa que la operación debe detenerse.

AsyncBase::CurrentStatus

Recupera el estado de la operación asincrónica actual.

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

Parámetros

status
Ubicación donde esta operación almacena el estado actual.

Comentarios

Esta operación es segura para subprocesos.

AsyncBase::ErrorCode

Recupera el código de error de la operación asincrónica actual.

inline void ErrorCode(
   HRESULT *error
);

Parámetros

error
Ubicación donde esta operación almacena el código de error actual.

Comentarios

Esta operación es segura para subprocesos.

AsyncBase::FireCompletion

Invoca el controlador de eventos de finalización o restablece el delegado de progreso interno.

void FireCompletion(
   void
) override;

virtual void FireCompletion();

Comentarios

La primera versión de FireCompletion() restablece la variable de delegado de progreso interno. La segunda versión invoca al controlador de eventos de finalización si la operación asincrónica está completa.

AsyncBase::FireProgress

Invoca el controlador de eventos de progreso actual.

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

Parámetros

arg
El método del controlador de eventos para invocar.

Comentarios

ProgressTraits se deriva de ArgTraitsHelper Structure.

AsyncBase::get_ErrorCode

Recupera el código de error de la operación asincrónica actual.

STDMETHOD(
   get_ErrorCode
)(HRESULT* errorCode) override;

Parámetros

errorCode
Ubicación donde se almacena el código de error actual.

Valor devuelto

S_OK si se realiza correctamente; de lo contrario, E_ILLEGAL_METHOD_CALL si se cierra la operación asincrónica actual.

AsyncBase::get_Id

Recupera el controlador de la operación asincrónica.

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

Parámetros

id
Ubicación donde se va a almacenar el controlador.

Valor devuelto

S_OK si se realiza correctamente; de lo contrario, E_ILLEGAL_METHOD_CALL.

Comentarios

Este método implementa IAsyncInfo::get_Id.

AsyncBase::get_Status

Recupera un valor que indica el estado de la operación asincrónica.

STDMETHOD(
   get_Status
)(AsyncStatus *status) override;

Parámetros

status
Ubicación donde se va a almacenar el estado. Para obtener más información, vea Windows::Foundation::AsyncStatus enumeración.

Valor devuelto

S_OK si se realiza correctamente; de lo contrario, E_ILLEGAL_METHOD_CALL.

Comentarios

Este método implementa IAsyncInfo::get_Status.

AsyncBase::GetOnComplete

Copia la dirección del controlador de eventos de finalización actual en la variable especificada.

STDMETHOD(
   GetOnComplete
)(TComplete** completeHandler);

Parámetros

completeHandler
Ubicación donde se almacena la dirección del controlador de eventos de finalización actual.

Valor devuelto

S_OK si se realiza correctamente; de lo contrario, E_ILLEGAL_METHOD_CALL.

AsyncBase::GetOnProgress

Copia la dirección del controlador de eventos de progreso actual en la variable especificada.

STDMETHOD(
   GetOnProgress
)(TProgress** progressHandler);

Parámetros

progressHandler
Ubicación donde se almacena la dirección del controlador de eventos de progreso actual.

Valor devuelto

S_OK si se realiza correctamente; de lo contrario, E_ILLEGAL_METHOD_CALL.

AsyncBase::OnCancel

Si se reemplaza en una clase derivada, cancela una operación asincrónica.

virtual void OnCancel(
   void
) = 0;

AsyncBase::OnClose

Si se reemplaza en una clase derivada, cancela una operación asincrónica.

virtual void OnClose(
   void
) = 0;

AsyncBase::OnStart

Si se reemplaza en una clase derivada, cancela una operación asincrónica.

virtual HRESULT OnStart(
   void
) = 0;

AsyncBase::put_Id

Establece el controlador de la operación asincrónica.

STDMETHOD(
   put_Id
)(const unsigned int id);

Parámetros

id
Controlador distinto de cero.

Valor devuelto

S_OK si se realiza correctamente; de lo contrario, E_INVALIDARG o E_ILLEGAL_METHOD_CALL.

AsyncBase::PutOnComplete

Establece la dirección del controlador de eventos de finalización en el valor especificado.

STDMETHOD(
   PutOnComplete
)(TComplete* completeHandler);

Parámetros

completeHandler
Dirección en la que se establece el controlador de eventos de finalización.

Valor devuelto

S_OK si se realiza correctamente; de lo contrario, E_ILLEGAL_METHOD_CALL.

AsyncBase::PutOnProgress

Establece la dirección del controlador de eventos de progreso en el valor especificado.

STDMETHOD(
   PutOnProgress
)(TProgress* progressHandler);

Parámetros

progressHandler
Dirección en la que se establece el controlador de eventos de progreso.

Valor devuelto

S_OK si se realiza correctamente; de lo contrario, E_ILLEGAL_METHOD_CALL.

AsyncBase::Start

Inicia la operación asincrónica.

STDMETHOD(
   Start
)(void);

Valor devuelto

S_OK si la operación se inicia o ya está iniciada; de lo contrario, E_ILLEGAL_STATE_CHANGE.

Comentarios

Start() es un método protegido que no es visible externamente porque las operaciones asíncronas tienen un "inicio activo" antes de volver al llamador.

AsyncBase::TryTransitionToCompleted

Indica si se ha completado la operación asincrónica actual.

bool TryTransitionToCompleted(
   void
);

Valor devuelto

true si la operación asincrónica se ha completado; en caso contrario, false.

AsyncBase::TryTransitionToError

Indica si el código de error especificado puede modificar el estado de error interno.

bool TryTransitionToError(
   const HRESULT error
);

Parámetros

error
Error HRESULT.

Valor devuelto

true si se cambió el estado de error interno; de lo contrario, false.

Comentarios

Esta operación modifica el estado de error solo si el estado de error ya está establecido en S_OK. Esta operación no tiene ningún efecto si el estado del error ya es error, cancelado, completado o cerrado.