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.