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

Jméno popis
AsyncBase::AsyncBase Inicializuje instanci třídy AsyncBase.

Veřejné metody

Jméno 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

Jméno 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);

Vrácená 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::Cancelprá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();

Vrácená 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();

Vrácená 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;

Vrácená 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::Closeprá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();

Vrácená 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.

Vrácená 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.

Vrácená 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 .

Vrácená 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í.

Vrácená 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.

Vrácená 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.

Vrácená 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í.

Vrácená 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.

Vrácená hodnota

S_OK v případě úspěchu; jinak E_ILLEGAL_METHOD_CALL.

AsyncBase::Start

Spustí asynchronní operaci.

STDMETHOD(
   Start
)(void);

Vrácená 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
);

Vrácená hodnota

truepokud 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.

Vrácená hodnota

truepokud 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.