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::Cancel
e 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::Close
e 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
true
se 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.