AsyncBase – třída
Implementuje prostředí Windows Runtime asynchronní stavový počítač.
Syntaxe
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>;
Parametry
Dokončování
Obslužná rutina události, která se volá při dokončení asynchronní operace.
TProgress
Obslužná rutina události, která se volá, když spuštěná asynchronní operace hlásí aktuální průběh operace.
resultType
Jedna z hodnot výčtu AsyncResultType . Ve výchozím nastavení . SingleResult
Členové
Veřejné konstruktory
Název | Popis |
---|---|
AsyncBase::AsyncBase | Inicializuje instanci třídy AsyncBase . |
Veřejné metody
Název | Popis |
---|---|
AsyncBase::Cancel | Zruší asynchronní operaci. |
AsyncBase::Close | Zavře asynchronní operaci. |
AsyncBase::FireCompletion | Vyvolá obslužnou rutinu události dokončení nebo resetuje interního delegáta průběhu. |
AsyncBase::FireProgress | Vyvolá aktuální obslužnou rutinu události průběhu. |
AsyncBase::get_ErrorCode | Načte kód chyby pro aktuální asynchronní operaci. |
AsyncBase::get_Id | Načte popisovač asynchronní operace. |
AsyncBase::get_Status | Načte hodnotu, která označuje stav asynchronní operace. |
AsyncBase::GetOnComplete | Zkopíruje adresu aktuální obslužné rutiny události dokončení do zadané proměnné. |
AsyncBase::GetOnProgress | Zkopíruje adresu aktuální obslužné rutiny události průběhu do zadané proměnné. |
AsyncBase::p ut_Id | Nastaví popisovač asynchronní operace. |
AsyncBase::P utOnComplete | Nastaví adresu obslužné rutiny události dokončení na zadanou hodnotu. |
AsyncBase::P utOnProgress | Nastaví adresu obslužné rutiny události průběhu na zadanou hodnotu. |
Chráněné metody
Název | Popis |
---|---|
AsyncBase::CheckValidStateForDelegateCall | Testuje, zda lze vlastnosti delegáta upravit v aktuálním asynchronním stavu. |
AsyncBase::CheckValidStateForResultsCall | Testuje, zda lze výsledky asynchronní operace shromažďovat v aktuálním asynchronním stavu. |
AsyncBase::ContinueAsyncOperation | Určuje, zda má asynchronní operace pokračovat ve zpracování, nebo by se měla zastavit. |
AsyncBase::CurrentStatus | Načte stav aktuální asynchronní operace. |
AsyncBase::ErrorCode | Načte kód chyby pro aktuální asynchronní operaci. |
AsyncBase::OnCancel | Při přepsání v odvozené třídě zruší asynchronní operaci. |
AsyncBase::OnClose | Při přepsání v odvozené třídě zavře asynchronní operaci. |
AsyncBase::OnStart | Při přepsání v odvozené třídě spustí asynchronní operaci. |
AsyncBase::Start | Spustí asynchronní operaci. |
AsyncBase::TryTransitionToCompleted | Určuje, jestli se aktuální asynchronní operace dokončila. |
AsyncBase::TryTransitionToError | Určuje, zda zadaný kód chyby může změnit vnitřní stav chyby. |
Hierarchie dědičnosti
AsyncBase
AsyncBase
Požadavky
Hlavička: async.h
Obor názvů: Microsoft::WRL
AsyncBase::AsyncBase
Inicializuje instanci třídy AsyncBase
.
AsyncBase();
AsyncBase::Cancel
Zruší asynchronní operaci.
STDMETHOD(
Cancel
)(void);
Návratová hodnota
Ve výchozím nastavení vždy vrátí S_OK.
Poznámky
Cancel()
je výchozí implementace a neprovádí žádnou skutečnou IAsyncInfo::Cancel
práci. Chcete-li skutečně zrušit asynchronní operaci, přepište čistou virtuální metodu OnCancel()
.
AsyncBase::CheckValidStateForDelegateCall
Testuje, zda lze vlastnosti delegáta upravit v aktuálním asynchronním stavu.
inline HRESULT CheckValidStateForDelegateCall();
Návratová hodnota
S_OK, pokud lze upravit vlastnosti delegáta; jinak E_ILLEGAL_METHOD_CALL.
AsyncBase::CheckValidStateForResultsCall
Testuje, zda lze výsledky asynchronní operace shromažďovat v aktuálním asynchronním stavu.
inline HRESULT CheckValidStateForResultsCall();
Návratová hodnota
S_OK, pokud lze shromáždit výsledky; jinak E_ILLEGAL_METHOD_CALLE_ILLEGAL_METHOD_CALL.
AsyncBase::Close
Zavře asynchronní operaci.
STDMETHOD(
Close
)(void) override;
Návratová hodnota
S_OK, pokud se operace zavře nebo je již uzavřena; jinak E_ILLEGAL_STATE_CHANGE.
Poznámky
Close()
je výchozí implementace a neprovádí žádnou skutečnou IAsyncInfo::Close
práci. Pokud chcete skutečně zavřít asynchronní operaci, přepište čistou virtuální metodu OnClose()
.
AsyncBase::ContinueAsyncOperation
Určuje, zda má asynchronní operace pokračovat ve zpracování, nebo by se měla zastavit.
inline bool ContinueAsyncOperation();
Návratová hodnota
true
pokud je spuštěn aktuální stav asynchronní operace, což znamená, že operace by měla pokračovat. Jinak , což znamená, false
že operace by se měla zastavit.
AsyncBase::CurrentStatus
Načte stav aktuální asynchronní operace.
inline void CurrentStatus(
Details::AsyncStatusInternal *status
);
Parametry
status
Umístění, kam tato operace ukládá aktuální stav.
Poznámky
Tato operace je bezpečná pro přístup z více vláken.
AsyncBase::ErrorCode
Načte kód chyby pro aktuální asynchronní operaci.
inline void ErrorCode(
HRESULT *error
);
Parametry
chyba
Umístění, kam tato operace ukládá aktuální kód chyby.
Poznámky
Tato operace je bezpečná pro přístup z více vláken.
AsyncBase::FireCompletion
Vyvolá obslužnou rutinu události dokončení nebo resetuje interního delegáta průběhu.
void FireCompletion(
void
) override;
virtual void FireCompletion();
Poznámky
První verze resetuje proměnnou delegáta interního FireCompletion()
průběhu. Druhá verze vyvolá obslužnou rutinu události dokončení, pokud je asynchronní operace dokončena.
AsyncBase::FireProgress
Vyvolá aktuální obslužnou rutinu události průběhu.
void FireProgress(
const typename ProgressTraits::Arg2Type arg
);
Parametry
Arg
Metoda obslužné rutiny události, která se má vyvolat.
Poznámky
ProgressTraits
je odvozena z ArgTraitsHelper Structure.
AsyncBase::get_ErrorCode
Načte kód chyby pro aktuální asynchronní operaci.
STDMETHOD(
get_ErrorCode
)(HRESULT* errorCode) override;
Parametry
errorCode
Umístění, kde je uložený aktuální kód chyby.
Návratová hodnota
S_OK v případě úspěchu; v opačném případě E_ILLEGAL_METHOD_CALL, pokud je aktuální asynchronní operace uzavřena.
AsyncBase::get_Id
Načte popisovač asynchronní operace.
STDMETHOD(
get_Id
)(unsigned int *id) override;
Parametry
id
Umístění, kam se má popisovač uložit.
Návratová hodnota
S_OK v případě úspěchu; jinak E_ILLEGAL_METHOD_CALL.
Poznámky
Tato metoda implementuje IAsyncInfo::get_Id
.
AsyncBase::get_Status
Načte hodnotu, která označuje stav asynchronní operace.
STDMETHOD(
get_Status
)(AsyncStatus *status) override;
Parametry
status
Umístění, kam se má stav uložit. Další informace naleznete v výčtu Windows::Foundation::AsyncStatus
.
Návratová hodnota
S_OK v případě úspěchu; jinak E_ILLEGAL_METHOD_CALL.
Poznámky
Tato metoda implementuje IAsyncInfo::get_Status
.
AsyncBase::GetOnComplete
Zkopíruje adresu aktuální obslužné rutiny události dokončení do zadané proměnné.
STDMETHOD(
GetOnComplete
)(TComplete** completeHandler);
Parametry
completeHandler
Umístění, kde je uložena adresa aktuální obslužné rutiny události dokončení.
Návratová hodnota
S_OK v případě úspěchu; jinak E_ILLEGAL_METHOD_CALL.
AsyncBase::GetOnProgress
Zkopíruje adresu aktuální obslužné rutiny události průběhu do zadané proměnné.
STDMETHOD(
GetOnProgress
)(TProgress** progressHandler);
Parametry
progressHandler
Umístění, kde je uložena adresa aktuální obslužné rutiny události průběhu.
Návratová hodnota
S_OK v případě úspěchu; jinak E_ILLEGAL_METHOD_CALL.
AsyncBase::OnCancel
Při přepsání v odvozené třídě zruší asynchronní operaci.
virtual void OnCancel(
void
) = 0;
AsyncBase::OnClose
Při přepsání v odvozené třídě zavře asynchronní operaci.
virtual void OnClose(
void
) = 0;
AsyncBase::OnStart
Při přepsání v odvozené třídě spustí asynchronní operaci.
virtual HRESULT OnStart(
void
) = 0;
AsyncBase::p ut_Id
Nastaví popisovač asynchronní operace.
STDMETHOD(
put_Id
)(const unsigned int id);
Parametry
id
Nenulový úchyt.
Návratová hodnota
S_OK v případě úspěchu; v opačném případě E_INVALIDARG nebo E_ILLEGAL_METHOD_CALL.
AsyncBase::P utOnComplete
Nastaví adresu obslužné rutiny události dokončení na zadanou hodnotu.
STDMETHOD(
PutOnComplete
)(TComplete* completeHandler);
Parametry
completeHandler
Adresa, na kterou je nastavena obslužná rutina události dokončení.
Návratová hodnota
S_OK v případě úspěchu; jinak E_ILLEGAL_METHOD_CALL.
AsyncBase::P utOnProgress
Nastaví adresu obslužné rutiny události průběhu na zadanou hodnotu.
STDMETHOD(
PutOnProgress
)(TProgress* progressHandler);
Parametry
progressHandler
Adresa, na kterou je nastavena obslužná rutina události průběhu.
Návratová hodnota
S_OK v případě úspěchu; jinak E_ILLEGAL_METHOD_CALL.
AsyncBase::Start
Spustí asynchronní operaci.
STDMETHOD(
Start
)(void);
Návratová hodnota
S_OK, pokud se operace spustí nebo je již spuštěna; jinak E_ILLEGAL_STATE_CHANGE.
Poznámky
Start()
je chráněná metoda, která není externě viditelná, protože asynchronní operace "hot start" před návratem do volajícího.
AsyncBase::TryTransitionToCompleted
Určuje, jestli se aktuální asynchronní operace dokončila.
bool TryTransitionToCompleted(
void
);
Návratová hodnota
true
pokud byla asynchronní operace dokončena; v opačném případě . false
AsyncBase::TryTransitionToError
Určuje, zda zadaný kód chyby může změnit vnitřní stav chyby.
bool TryTransitionToError(
const HRESULT error
);
Parametry
chyba
Chyba HRESULT.
Návratová hodnota
true
pokud došlo ke změně stavu vnitřní chyby; v opačném případě . false
Poznámky
Tato operace upraví stav chyby pouze v případě, že je stav chyby již nastavený na S_OK. Tato operace nemá žádný vliv, pokud je již chybový stav chyb, zrušen, dokončen nebo uzavřen.