AsyncBase-Klasse

Implementiert den asynchronen Zustandsautomat der Windows-Runtime.

Syntax

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

Parameter

TVervollständigen
Ein Ereignishandler, der aufgerufen wird, wenn ein asynchroner Vorgang abgeschlossen ist.

TProgress
Ein Ereignishandler, der aufgerufen wird, wenn ein ausgeführter asynchroner Vorgang den aktuellen Status des Vorgangs meldet.

resultType
Einer der AsyncResultType-Enumerationswerte . Standardmäßig SingleResult.

Member

Öffentliche Konstruktoren

Name Beschreibung
AsyncBase::AsyncBase Initialisiert eine Instanz der AsyncBase-Klasse.

Öffentliche Methoden

Name Beschreibung
AsyncBase::Cancel Bricht einen asynchronen Vorgang ab.
AsyncBase::Close Schließt den asynchronen Vorgang.
AsyncBase::FireCompletion Ruft den Abschlussereignishandler auf oder setzt den internen Statusdelegat zurück.
AsyncBase::FireProgress Ruft den aktuellen Statusereignishandler auf.
AsyncBase::get_ErrorCode Ruft den Fehlercode für den aktuellen asynchronen Vorgang ab.
AsyncBase::get_Id Ruft das Handle des asynchronen Vorgangs ab.
AsyncBase::get_Status Ruft einen Wert ab, der den Status des asynchronen Vorgangs angibt.
AsyncBase::GetOnComplete Kopiert die Adresse des aktuellen Abschlussereignishandlers in die angegebene Variable.
AsyncBase::GetOnProgress Kopiert die Adresse des aktuellen Statusereignishandlers in die angegebene Variable.
AsyncBase::p ut_Id Legt das Handle des asynchronen Vorgangs fest.
AsyncBase::P utOnComplete Legt die Adresse des Abschlussereignishandlers auf den angegebenen Wert fest.
AsyncBase::P utOnProgress Legt die Adresse des Statusereignishandlers auf den angegebenen Wert fest.

Geschützte Methoden

Name Beschreibung
AsyncBase::CheckValidStateForDelegateCall Testet, ob Stellvertretungseigenschaften im aktuellen asynchronen Zustand geändert werden können.
AsyncBase::CheckValidStateForResultsCall Überprüft, ob die Ergebnisse eines asynchronen Vorgangs im aktuellen asynchronen Zustand erfasst werden können.
AsyncBase::ContinueAsyncOperation Bestimmt, ob der asynchrone Vorgang die Verarbeitung fortsetzen oder anhalten soll.
AsyncBase::CurrentStatus Ruft den Status des aktuellen asynchronen Vorgangs ab.
AsyncBase::ErrorCode Ruft den Fehlercode für den aktuellen asynchronen Vorgang ab.
AsyncBase::OnCancel Bricht beim Überschreiben in einer abgeleiteten Klasse einen asynchronen -Vorgang ab.
AsyncBase::OnClose Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein asynchroner Vorgang geschlossen.
AsyncBase::OnStart Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein asynchroner Vorgang gestartet.
AsyncBase::Start Startet den asynchronen Vorgang.
AsyncBase::TryTransitionToCompleted Gibt an, ob der aktuelle asynchrone Vorgang abgeschlossen wurde.
AsyncBase::TryTransitionToError Gibt an, ob der angegebene Fehlercode den internen Fehlerstatus ändern kann.

Vererbungshierarchie

AsyncBase

AsyncBase

Anforderungen

Header: async.h

Namespace: Microsoft::WRL

AsyncBase::AsyncBase

Initialisiert eine Instanz der AsyncBase-Klasse.

AsyncBase();

AsyncBase::Cancel

Bricht einen asynchronen Vorgang ab.

STDMETHOD(
   Cancel
)(void);

Rückgabewert

Gibt standardmäßig immer S_OK zurück.

Hinweise

Cancel() ist eine Standardimplementierung von IAsyncInfo::Cancelund funktioniert nicht tatsächlich. Um einen asynchronen Vorgang tatsächlich abzubrechen, überschreiben Sie die OnCancel() reine virtuelle Methode.

AsyncBase::CheckValidStateForDelegateCall

Testet, ob Stellvertretungseigenschaften im aktuellen asynchronen Zustand geändert werden können.

inline HRESULT CheckValidStateForDelegateCall();

Rückgabewert

S_OK, wenn Stellvertretungseigenschaften geändert werden können; andernfalls E_ILLEGAL_METHOD_CALL.

AsyncBase::CheckValidStateForResultsCall

Überprüft, ob die Ergebnisse eines asynchronen Vorgangs im aktuellen asynchronen Zustand erfasst werden können.

inline HRESULT CheckValidStateForResultsCall();

Rückgabewert

S_OK, wenn Ergebnisse gesammelt werden können; andernfalls E_ILLEGAL_METHOD_CALLE_ILLEGAL_METHOD_CALL.

AsyncBase::Close

Schließt den asynchronen Vorgang.

STDMETHOD(
   Close
)(void) override;

Rückgabewert

S_OK, wenn der Vorgang geschlossen oder bereits geschlossen wird; andernfalls E_ILLEGAL_STATE_CHANGE.

Hinweise

Close() ist eine Standardimplementierung von IAsyncInfo::Closeund funktioniert nicht tatsächlich. Um einen asynchronen Vorgang tatsächlich zu schließen, überschreiben Sie die OnClose() reine virtuelle Methode.

AsyncBase::ContinueAsyncOperation

Bestimmt, ob der asynchrone Vorgang die Verarbeitung fortsetzen oder anhalten soll.

inline bool ContinueAsyncOperation();

Rückgabewert

truewenn der aktuelle Zustand des asynchronen Vorgangs gestartet wird, was bedeutet, dass der Vorgang fortgesetzt werden soll. falseAndernfalls sollte der Vorgang angehalten werden.

AsyncBase::CurrentStatus

Ruft den Status des aktuellen asynchronen Vorgangs ab.

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

Parameter

status
Der Speicherort, an dem dieser Vorgang den aktuellen Status speichert.

Hinweise

Dieser Vorgang ist threadsicher.

AsyncBase::ErrorCode

Ruft den Fehlercode für den aktuellen asynchronen Vorgang ab.

inline void ErrorCode(
   HRESULT *error
);

Parameter

error
Der Speicherort, an dem dieser Vorgang den aktuellen Fehlercode speichert.

Hinweise

Dieser Vorgang ist threadsicher.

AsyncBase::FireCompletion

Ruft den Abschlussereignishandler auf oder setzt den internen Statusdelegat zurück.

void FireCompletion(
   void
) override;

virtual void FireCompletion();

Hinweise

Die erste Version der FireCompletion() Zurücksetzung der internen Statusdelegatvariable. Die zweite Version ruft den Abschlussereignishandler auf, wenn der asynchrone Vorgang abgeschlossen ist.

AsyncBase::FireProgress

Ruft den aktuellen Statusereignishandler auf.

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

Parameter

arg
Die ereignishandlermethode, die aufgerufen werden soll.

Hinweise

ProgressTraits wird von der ArgTraitsHelper-Struktur abgeleitet.

AsyncBase::get_ErrorCode

Ruft den Fehlercode für den aktuellen asynchronen Vorgang ab.

STDMETHOD(
   get_ErrorCode
)(HRESULT* errorCode) override;

Parameter

Errorcode
Der Speicherort, an dem der aktuelle Fehlercode gespeichert ist.

Rückgabewert

bei erfolgreicher Ausführung S_OK; andernfalls E_ILLEGAL_METHOD_CALL, wenn der aktuelle asynchrone Vorgang geschlossen wird.

AsyncBase::get_Id

Ruft das Handle des asynchronen Vorgangs ab.

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

Parameter

id
Der Speicherort, an dem das Handle gespeichert werden soll.

Rückgabewert

bei erfolgreicher Ausführung S_OK; andernfalls E_ILLEGAL_METHOD_CALL.

Hinweise

Diese Methode implementiert IAsyncInfo::get_Id.

AsyncBase::get_Status

Ruft einen Wert ab, der den Status des asynchronen Vorgangs angibt.

STDMETHOD(
   get_Status
)(AsyncStatus *status) override;

Parameter

status
Der Speicherort, an dem der Status gespeichert werden soll. Weitere Informationen finden Sie unter Windows::Foundation::AsyncStatus Enumeration.

Rückgabewert

bei erfolgreicher Ausführung S_OK; andernfalls E_ILLEGAL_METHOD_CALL.

Hinweise

Diese Methode implementiert IAsyncInfo::get_Status.

AsyncBase::GetOnComplete

Kopiert die Adresse des aktuellen Abschlussereignishandlers in die angegebene Variable.

STDMETHOD(
   GetOnComplete
)(TComplete** completeHandler);

Parameter

completeHandler
Der Speicherort, an dem die Adresse des aktuellen Abschlussereignishandlers gespeichert ist.

Rückgabewert

bei erfolgreicher Ausführung S_OK; andernfalls E_ILLEGAL_METHOD_CALL.

AsyncBase::GetOnProgress

Kopiert die Adresse des aktuellen Statusereignishandlers in die angegebene Variable.

STDMETHOD(
   GetOnProgress
)(TProgress** progressHandler);

Parameter

progressHandler
Der Speicherort, an dem die Adresse des aktuellen Statusereignishandlers gespeichert ist.

Rückgabewert

bei erfolgreicher Ausführung S_OK; andernfalls E_ILLEGAL_METHOD_CALL.

AsyncBase::OnCancel

Bricht beim Überschreiben in einer abgeleiteten Klasse einen asynchronen -Vorgang ab.

virtual void OnCancel(
   void
) = 0;

AsyncBase::OnClose

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein asynchroner Vorgang geschlossen.

virtual void OnClose(
   void
) = 0;

AsyncBase::OnStart

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein asynchroner Vorgang gestartet.

virtual HRESULT OnStart(
   void
) = 0;

AsyncBase::p ut_Id

Legt das Handle des asynchronen Vorgangs fest.

STDMETHOD(
   put_Id
)(const unsigned int id);

Parameter

id
Ein Nichtzero-Handle.

Rückgabewert

bei erfolgreicher Ausführung S_OK; andernfalls E_INVALIDARG oder E_ILLEGAL_METHOD_CALL.

AsyncBase::P utOnComplete

Legt die Adresse des Abschlussereignishandlers auf den angegebenen Wert fest.

STDMETHOD(
   PutOnComplete
)(TComplete* completeHandler);

Parameter

completeHandler
Die Adresse, auf die der Abschlussereignishandler festgelegt ist.

Rückgabewert

bei erfolgreicher Ausführung S_OK; andernfalls E_ILLEGAL_METHOD_CALL.

AsyncBase::P utOnProgress

Legt die Adresse des Statusereignishandlers auf den angegebenen Wert fest.

STDMETHOD(
   PutOnProgress
)(TProgress* progressHandler);

Parameter

progressHandler
Die Adresse, auf die der Statusereignishandler festgelegt ist.

Rückgabewert

bei erfolgreicher Ausführung S_OK; andernfalls E_ILLEGAL_METHOD_CALL.

AsyncBase::Start

Startet den asynchronen Vorgang.

STDMETHOD(
   Start
)(void);

Rückgabewert

S_OK, wenn der Vorgang gestartet oder bereits gestartet wird; andernfalls E_ILLEGAL_STATE_CHANGE.

Hinweise

Start() ist eine geschützte Methode, die nicht extern sichtbar ist, da asynchrone Vorgänge "Hot Start" vor der Rückgabe an den Aufrufer ausgeführt werden.

AsyncBase::TryTransitionToCompleted

Gibt an, ob der aktuelle asynchrone Vorgang abgeschlossen wurde.

bool TryTransitionToCompleted(
   void
);

Rückgabewert

truewenn der asynchrone Vorgang abgeschlossen ist; andernfalls . false

AsyncBase::TryTransitionToError

Gibt an, ob der angegebene Fehlercode den internen Fehlerstatus ändern kann.

bool TryTransitionToError(
   const HRESULT error
);

Parameter

error
Fehler HRESULT.

Rückgabewert

truewenn der interne Fehlerstatus geändert wurde; andernfalls . false

Hinweise

Dieser Vorgang ändert den Fehlerstatus nur, wenn der Fehlerzustand bereits auf S_OK festgelegt ist. Dieser Vorgang hat keine Auswirkung, wenn der Fehlerstatus bereits fehler, abgebrochen, abgeschlossen oder geschlossen ist.