AsyncBase (classe)

Implementa la macchina a stati asincrona di Windows Runtime.

Sintassi

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

Parametri

TComplete
Gestore eventi chiamato al completamento di un'operazione asincrona.

Tprogress
Gestore eventi chiamato quando un'operazione asincrona in esecuzione segnala lo stato di avanzamento corrente dell'operazione.

resultType
Uno dei valori di enumerazione AsyncResultType . Per impostazione predefinita, SingleResult.

Membri

Costruttori pubblici

Nome Descrizione
AsyncBase::AsyncBase Inizializza un'istanza della classe AsyncBase.

Metodi pubblici

Nome Descrizione
AsyncBase::Cancel Annulla un'operazione asincrona.
AsyncBase::Close Chiude l'operazione asincrona.
AsyncBase::FireCompletion Richiama il gestore eventi di completamento o reimposta il delegato di stato interno.
AsyncBase::FireProgress Richiama il gestore eventi di stato corrente.
AsyncBase::get_ErrorCode Recupera il codice di errore per l'operazione asincrona corrente.
AsyncBase::get_Id Recupera l'handle dell'operazione asincrona.
AsyncBase::get_Status Recupera un valore che indica lo stato dell'operazione asincrona.
AsyncBase::GetOnComplete Copia l'indirizzo del gestore eventi di completamento corrente nella variabile specificata.
AsyncBase::GetOnProgress Copia l'indirizzo del gestore eventi di stato corrente nella variabile specificata.
AsyncBase::p ut_Id Imposta l'handle dell'operazione asincrona.
AsyncBase::P utOnComplete Imposta l'indirizzo del gestore eventi di completamento sul valore specificato.
AsyncBase::P utOnProgress Imposta l'indirizzo del gestore eventi di stato sul valore specificato.

Metodi protetti

Nome Descrizione
AsyncBase::CheckValidStateForDelegateCall Verifica se le proprietà del delegato possono essere modificate nello stato asincrono corrente.
AsyncBase::CheckValidStateForResultsCall Verifica se i risultati di un'operazione asincrona possono essere raccolti nello stato asincrono corrente.
AsyncBase::ContinueAsyncOperation Determina se l'operazione asincrona deve continuare l'elaborazione o deve interrompersi.
AsyncBase::CurrentStatus Recupera lo stato dell'operazione asincrona corrente.
AsyncBase::ErrorCode Recupera il codice di errore per l'operazione asincrona corrente.
AsyncBase::OnCancel In caso di override in una classe derivata, annulla un'operazione  asincrona.
AsyncBase::OnClose Quando sottoposto a override in una classe derivata, chiude un'operazione asincrona.
AsyncBase::OnStart Quando sottoposto a override in una classe derivata, avvia un'operazione asincrona.
AsyncBase::Start Avvia l'operazione asincrona.
AsyncBase::TryTransitionToCompleted Indica se l'operazione asincrona corrente è stata completata.
AsyncBase::TryTransitionToError Indica se il codice di errore specificato può modificare lo stato di errore interno.

Gerarchia di ereditarietà

AsyncBase

AsyncBase

Requisiti

Intestazione: async.h

Spazio dei nomi: Microsoft::WRL

AsyncBase::AsyncBase

Inizializza un'istanza della classe AsyncBase.

AsyncBase();

AsyncBase::Cancel

Annulla un'operazione asincrona.

STDMETHOD(
   Cancel
)(void);

Valore restituito

Per impostazione predefinita, restituisce sempre S_OK.

Osservazioni:

Cancel() è un'implementazione predefinita di IAsyncInfo::Cancele non esegue operazioni effettive. Per annullare effettivamente un'operazione asincrona, eseguire l'override del OnCancel() metodo virtuale puro.

AsyncBase::CheckValidStateForDelegateCall

Verifica se le proprietà del delegato possono essere modificate nello stato asincrono corrente.

inline HRESULT CheckValidStateForDelegateCall();

Valore restituito

S_OK se è possibile modificare le proprietà del delegato; in caso contrario, E_ILLEGAL_METHOD_CALL.

AsyncBase::CheckValidStateForResultsCall

Verifica se i risultati di un'operazione asincrona possono essere raccolti nello stato asincrono corrente.

inline HRESULT CheckValidStateForResultsCall();

Valore restituito

S_OK se i risultati possono essere raccolti; in caso contrario, E_ILLEGAL_METHOD_CALLE_ILLEGAL_METHOD_CALL.

AsyncBase::Close

Chiude l'operazione asincrona.

STDMETHOD(
   Close
)(void) override;

Valore restituito

S_OK se l'operazione si chiude o è già chiusa; in caso contrario, E_ILLEGAL_STATE_CHANGE.

Osservazioni:

Close() è un'implementazione predefinita di IAsyncInfo::Closee non esegue operazioni effettive. Per chiudere effettivamente un'operazione asincrona, eseguire l'override del OnClose() metodo virtuale puro.

AsyncBase::ContinueAsyncOperation

Determina se l'operazione asincrona deve continuare l'elaborazione o deve interrompersi.

inline bool ContinueAsyncOperation();

Valore restituito

truese viene avviato lo stato corrente dell'operazione asincrona, il che significa che l'operazione deve continuare. In caso contrario, false, il che significa che l'operazione deve interrompersi.

AsyncBase::CurrentStatus

Recupera lo stato dell'operazione asincrona corrente.

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

Parametri

status
Percorso in cui questa operazione archivia lo stato corrente.

Osservazioni:

Questa operazione è thread-safe.

AsyncBase::ErrorCode

Recupera il codice di errore per l'operazione asincrona corrente.

inline void ErrorCode(
   HRESULT *error
);

Parametri

error
Percorso in cui questa operazione archivia il codice di errore corrente.

Osservazioni:

Questa operazione è thread-safe.

AsyncBase::FireCompletion

Richiama il gestore eventi di completamento o reimposta il delegato di stato interno.

void FireCompletion(
   void
) override;

virtual void FireCompletion();

Osservazioni:

La prima versione di reimposta la variabile del delegato di FireCompletion() stato interno. La seconda versione richiama il gestore eventi di completamento se l'operazione asincrona è stata completata.

AsyncBase::FireProgress

Richiama il gestore eventi di stato corrente.

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

Parametri

arg
Metodo del gestore eventi da richiamare.

Osservazioni:

ProgressTraits derivata da ArgTraitsHelper Structure.

AsyncBase::get_ErrorCode

Recupera il codice di errore per l'operazione asincrona corrente.

STDMETHOD(
   get_ErrorCode
)(HRESULT* errorCode) override;

Parametri

Errorcode
Percorso in cui è archiviato il codice di errore corrente.

Valore restituito

S_OK se ha esito positivo; in caso contrario, E_ILLEGAL_METHOD_CALL se l'operazione asincrona corrente è chiusa.

AsyncBase::get_Id

Recupera l'handle dell'operazione asincrona.

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

Parametri

id
Posizione in cui archiviare l'handle.

Valore restituito

S_OK se ha esito positivo; in caso contrario, E_ILLEGAL_METHOD_CALL.

Osservazioni:

Questo metodo implementa IAsyncInfo::get_Id.

AsyncBase::get_Status

Recupera un valore che indica lo stato dell'operazione asincrona.

STDMETHOD(
   get_Status
)(AsyncStatus *status) override;

Parametri

status
Posizione in cui archiviare lo stato. Per ulteriori informazioni, vedere l'enumerazione Windows::Foundation::AsyncStatus.

Valore restituito

S_OK se ha esito positivo; in caso contrario, E_ILLEGAL_METHOD_CALL.

Osservazioni:

Questo metodo implementa IAsyncInfo::get_Status.

AsyncBase::GetOnComplete

Copia l'indirizzo del gestore eventi di completamento corrente nella variabile specificata.

STDMETHOD(
   GetOnComplete
)(TComplete** completeHandler);

Parametri

completeHandler
Percorso in cui è archiviato l'indirizzo del gestore eventi di completamento corrente.

Valore restituito

S_OK se ha esito positivo; in caso contrario, E_ILLEGAL_METHOD_CALL.

AsyncBase::GetOnProgress

Copia l'indirizzo del gestore eventi di stato corrente nella variabile specificata.

STDMETHOD(
   GetOnProgress
)(TProgress** progressHandler);

Parametri

progressHandler
Percorso in cui è archiviato l'indirizzo del gestore eventi di stato corrente.

Valore restituito

S_OK se ha esito positivo; in caso contrario, E_ILLEGAL_METHOD_CALL.

AsyncBase::OnCancel

In caso di override in una classe derivata, annulla un'operazione  asincrona.

virtual void OnCancel(
   void
) = 0;

AsyncBase::OnClose

Quando sottoposto a override in una classe derivata, chiude un'operazione asincrona.

virtual void OnClose(
   void
) = 0;

AsyncBase::OnStart

Quando sottoposto a override in una classe derivata, avvia un'operazione asincrona.

virtual HRESULT OnStart(
   void
) = 0;

AsyncBase::p ut_Id

Imposta l'handle dell'operazione asincrona.

STDMETHOD(
   put_Id
)(const unsigned int id);

Parametri

id
Handle diverso da zero.

Valore restituito

S_OK se ha esito positivo; in caso contrario, E_INVALIDARG o E_ILLEGAL_METHOD_CALL.

AsyncBase::P utOnComplete

Imposta l'indirizzo del gestore eventi di completamento sul valore specificato.

STDMETHOD(
   PutOnComplete
)(TComplete* completeHandler);

Parametri

completeHandler
Indirizzo a cui è impostato il gestore eventi di completamento.

Valore restituito

S_OK se ha esito positivo; in caso contrario, E_ILLEGAL_METHOD_CALL.

AsyncBase::P utOnProgress

Imposta l'indirizzo del gestore eventi di stato sul valore specificato.

STDMETHOD(
   PutOnProgress
)(TProgress* progressHandler);

Parametri

progressHandler
Indirizzo a cui è impostato il gestore eventi di stato.

Valore restituito

S_OK se ha esito positivo; in caso contrario, E_ILLEGAL_METHOD_CALL.

AsyncBase::Start

Avvia l'operazione asincrona.

STDMETHOD(
   Start
)(void);

Valore restituito

S_OK se l'operazione viene avviata o è già stata avviata; in caso contrario, E_ILLEGAL_STATE_CHANGE.

Osservazioni:

Start() è un metodo protetto che non è visibile esternamente perché le operazioni asincrone "hot start" prima di tornare al chiamante.

AsyncBase::TryTransitionToCompleted

Indica se l'operazione asincrona corrente è stata completata.

bool TryTransitionToCompleted(
   void
);

Valore restituito

true se l'operazione asincrona è stata completata; in caso contrario, false.

AsyncBase::TryTransitionToError

Indica se il codice di errore specificato può modificare lo stato di errore interno.

bool TryTransitionToError(
   const HRESULT error
);

Parametri

error
Errore HRESULT.

Valore restituito

true se lo stato di errore interno è stato modificato; in caso contrario, false.

Osservazioni:

Questa operazione modifica lo stato di errore solo se lo stato di errore è già impostato su S_OK. Questa operazione non ha alcun effetto se lo stato di errore è già errore, annullato, completato o chiuso.