AsyncBase — Klasa

Implementuje maszynę stanu asynchronicznego środowisko wykonawcze systemu Windows.

Składnia

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

TComplete
Procedura obsługi zdarzeń wywoływana po zakończeniu operacji asynchronicznej.

TProgress
Procedura obsługi zdarzeń wywoływana, gdy uruchomiona operacja asynchroniczna zgłasza bieżący postęp operacji.

Resulttype
Jedna z wartości wyliczenia AsyncResultType. Domyślnie . SingleResult

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
AsyncBase::AsyncBase Inicjuje wystąpienie klasy AsyncBase.

Metody publiczne

Nazwa/nazwisko opis
AsyncBase::Cancel Anuluje operację asynchroniczną.
AsyncBase::Close Zamyka operację asynchroniczną.
AsyncBase::FireCompletion Wywołuje procedurę obsługi zdarzeń ukończenia lub resetuje delegata postępu wewnętrznego.
AsyncBase::FireProgress Wywołuje bieżącą procedurę obsługi zdarzeń postępu.
AsyncBase::get_ErrorCode Pobiera kod błędu dla bieżącej operacji asynchronicznej.
AsyncBase::get_Id Pobiera uchwyt operacji asynchronicznej.
AsyncBase::get_Status Pobiera wartość wskazującą stan operacji asynchronicznej.
AsyncBase::GetOnComplete Kopiuje adres bieżącego programu obsługi zdarzeń ukończenia do określonej zmiennej.
AsyncBase::GetOnProgress Kopiuje adres bieżącego programu obsługi zdarzeń postępu do określonej zmiennej.
AsyncBase::p ut_Id Ustawia uchwyt operacji asynchronicznej.
AsyncBase::P utOnComplete Ustawia adres programu obsługi zdarzeń ukończenia na określoną wartość.
AsyncBase::P utOnProgress Ustawia adres procedury obsługi zdarzeń postępu na określoną wartość.

Metody chronione

Nazwa/nazwisko opis
AsyncBase::CheckValidStateForDelegateCall Sprawdza, czy właściwości delegata można modyfikować w bieżącym stanie asynchronicznym.
AsyncBase::CheckValidStateForResultsCall Sprawdza, czy wyniki operacji asynchronicznej można zebrać w bieżącym stanie asynchronicznym.
AsyncBase::ContinueAsyncOperation Określa, czy operacja asynchroniczna powinna kontynuować przetwarzanie, czy powinna zostać zatrzymana.
AsyncBase::CurrentStatus Pobiera stan bieżącej operacji asynchronicznej.
AsyncBase::ErrorCode Pobiera kod błędu dla bieżącej operacji asynchronicznej.
AsyncBase::OnCancel Po zastąpieniu w klasie pochodnej anuluje operację asynchroniczną.
AsyncBase::OnClose Po zastąpieniu w klasie pochodnej zamyka operację asynchroniczną.
AsyncBase::OnStart Po zastąpieniu w klasie pochodnej uruchamia operację asynchroniczną.
AsyncBase::Start Uruchamia operację asynchroniczną.
AsyncBase::TryTransitionToCompleted Wskazuje, czy bieżąca operacja asynchroniczna została ukończona.
AsyncBase::TryTransitionToError Wskazuje, czy określony kod błędu może modyfikować stan błędu wewnętrznego.

Hierarchia dziedziczenia

AsyncBase

AsyncBase

Wymagania

Nagłówek: async.h

Przestrzeń nazw: Microsoft::WRL

AsyncBase::AsyncBase

Inicjuje wystąpienie klasy AsyncBase.

AsyncBase();

AsyncBase::Cancel

Anuluje operację asynchroniczną.

STDMETHOD(
   Cancel
)(void);

Wartość zwracana

Domyślnie zawsze zwraca S_OK.

Uwagi

Cancel() jest domyślną implementacją parametru i nie wykonuje żadnej rzeczywistej IAsyncInfo::Cancelpracy. Aby rzeczywiście anulować operację asynchroniczną, przesłoń czystą metodę wirtualną OnCancel() .

AsyncBase::CheckValidStateForDelegateCall

Sprawdza, czy właściwości delegata można modyfikować w bieżącym stanie asynchronicznym.

inline HRESULT CheckValidStateForDelegateCall();

Wartość zwracana

S_OK, jeśli można zmodyfikować właściwości delegata; w przeciwnym razie E_ILLEGAL_METHOD_CALL.

AsyncBase::CheckValidStateForResultsCall

Sprawdza, czy wyniki operacji asynchronicznej można zebrać w bieżącym stanie asynchronicznym.

inline HRESULT CheckValidStateForResultsCall();

Wartość zwracana

S_OK, jeśli można zbierać wyniki; w przeciwnym razie E_ILLEGAL_METHOD_CALLE_ILLEGAL_METHOD_CALL.

AsyncBase::Close

Zamyka operację asynchroniczną.

STDMETHOD(
   Close
)(void) override;

Wartość zwracana

S_OK, jeśli operacja zostanie zamknięta lub została już zamknięta; w przeciwnym razie E_ILLEGAL_STATE_CHANGE.

Uwagi

Close() jest domyślną implementacją parametru i nie wykonuje żadnej rzeczywistej IAsyncInfo::Closepracy. Aby faktycznie zamknąć operację asynchroniczną, przesłoń czystą metodę wirtualną OnClose() .

AsyncBase::ContinueAsyncOperation

Określa, czy operacja asynchroniczna powinna kontynuować przetwarzanie, czy powinna zostać zatrzymana.

inline bool ContinueAsyncOperation();

Wartość zwracana

truejeśli uruchomiony jest bieżący stan operacji asynchronicznej, co oznacza, że operacja powinna być kontynuowana. W przeciwnym razie , co oznacza, falseże operacja powinna zostać zatrzymana.

AsyncBase::CurrentStatus

Pobiera stan bieżącej operacji asynchronicznej.

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

Parametry

status
Lokalizacja, w której ta operacja przechowuje bieżący stan.

Uwagi

Ta operacja jest bezpieczna wątkowo.

AsyncBase::ErrorCode

Pobiera kod błędu dla bieżącej operacji asynchronicznej.

inline void ErrorCode(
   HRESULT *error
);

Parametry

Błąd
Lokalizacja, w której ta operacja przechowuje bieżący kod błędu.

Uwagi

Ta operacja jest bezpieczna wątkowo.

AsyncBase::FireCompletion

Wywołuje procedurę obsługi zdarzeń ukończenia lub resetuje delegata postępu wewnętrznego.

void FireCompletion(
   void
) override;

virtual void FireCompletion();

Uwagi

Pierwsza wersja resetuje FireCompletion() wewnętrzną zmienną delegata postępu. Druga wersja wywołuje procedurę obsługi zdarzeń ukończenia, jeśli operacja asynchroniczna została ukończona.

AsyncBase::FireProgress

Wywołuje bieżącą procedurę obsługi zdarzeń postępu.

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

Parametry

Arg
Metoda obsługi zdarzeń do wywołania.

Uwagi

ProgressTraits pochodzi ze struktury ArgTraitsHelper.

AsyncBase::get_ErrorCode

Pobiera kod błędu dla bieżącej operacji asynchronicznej.

STDMETHOD(
   get_ErrorCode
)(HRESULT* errorCode) override;

Parametry

Errorcode
Lokalizacja, w której jest przechowywany bieżący kod błędu.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie E_ILLEGAL_METHOD_CALL, jeśli bieżąca operacja asynchroniczna jest zamknięta.

AsyncBase::get_Id

Pobiera uchwyt operacji asynchronicznej.

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

Parametry

id
Lokalizacja, w której ma być przechowywany uchwyt.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie E_ILLEGAL_METHOD_CALL.

Uwagi

Ta metoda implementuje metodę IAsyncInfo::get_Id.

AsyncBase::get_Status

Pobiera wartość wskazującą stan operacji asynchronicznej.

STDMETHOD(
   get_Status
)(AsyncStatus *status) override;

Parametry

status
Lokalizacja, w której ma być przechowywany stan. Aby uzyskać więcej informacji, zobacz Windows::Foundation::AsyncStatus wyliczenie.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie E_ILLEGAL_METHOD_CALL.

Uwagi

Ta metoda implementuje metodę IAsyncInfo::get_Status.

AsyncBase::GetOnComplete

Kopiuje adres bieżącego programu obsługi zdarzeń ukończenia do określonej zmiennej.

STDMETHOD(
   GetOnComplete
)(TComplete** completeHandler);

Parametry

completeHandler
Lokalizacja, w której jest przechowywany adres bieżącego programu obsługi zdarzeń ukończenia.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie E_ILLEGAL_METHOD_CALL.

AsyncBase::GetOnProgress

Kopiuje adres bieżącego programu obsługi zdarzeń postępu do określonej zmiennej.

STDMETHOD(
   GetOnProgress
)(TProgress** progressHandler);

Parametry

progressHandler
Lokalizacja, w której jest przechowywany adres bieżącego programu obsługi zdarzeń postępu.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie E_ILLEGAL_METHOD_CALL.

AsyncBase::OnCancel

Po zastąpieniu w klasie pochodnej anuluje operację asynchroniczną.

virtual void OnCancel(
   void
) = 0;

AsyncBase::OnClose

Po zastąpieniu w klasie pochodnej zamyka operację asynchroniczną.

virtual void OnClose(
   void
) = 0;

AsyncBase::OnStart

Po zastąpieniu w klasie pochodnej uruchamia operację asynchroniczną.

virtual HRESULT OnStart(
   void
) = 0;

AsyncBase::p ut_Id

Ustawia uchwyt operacji asynchronicznej.

STDMETHOD(
   put_Id
)(const unsigned int id);

Parametry

id
Uchwyt niezerowy.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie E_INVALIDARG lub E_ILLEGAL_METHOD_CALL.

AsyncBase::P utOnComplete

Ustawia adres programu obsługi zdarzeń ukończenia na określoną wartość.

STDMETHOD(
   PutOnComplete
)(TComplete* completeHandler);

Parametry

completeHandler
Adres, do którego ustawiono procedurę obsługi zdarzeń ukończenia.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie E_ILLEGAL_METHOD_CALL.

AsyncBase::P utOnProgress

Ustawia adres procedury obsługi zdarzeń postępu na określoną wartość.

STDMETHOD(
   PutOnProgress
)(TProgress* progressHandler);

Parametry

progressHandler
Adres, do którego ustawiono procedurę obsługi zdarzeń postępu.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie E_ILLEGAL_METHOD_CALL.

AsyncBase::Start

Uruchamia operację asynchroniczną.

STDMETHOD(
   Start
)(void);

Wartość zwracana

S_OK, jeśli operacja zostanie uruchomiona lub została już uruchomiona; w przeciwnym razie E_ILLEGAL_STATE_CHANGE.

Uwagi

Start() jest chronioną metodą, która nie jest widoczna zewnętrznie, ponieważ operacje asynchroniczne "hot start" przed powrotem do obiektu wywołującego.

AsyncBase::TryTransitionToCompleted

Wskazuje, czy bieżąca operacja asynchroniczna została ukończona.

bool TryTransitionToCompleted(
   void
);

Wartość zwracana

true jeśli operacja asynchroniczna została ukończona; w przeciwnym razie, false.

AsyncBase::TryTransitionToError

Wskazuje, czy określony kod błędu może modyfikować stan błędu wewnętrznego.

bool TryTransitionToError(
   const HRESULT error
);

Parametry

Błąd
Błąd HRESULT.

Wartość zwracana

true jeśli stan błędu wewnętrznego został zmieniony; w przeciwnym razie, false.

Uwagi

Ta operacja modyfikuje stan błędu tylko wtedy, gdy stan błędu jest już ustawiony na S_OK. Ta operacja nie ma wpływu, jeśli stan błędu jest już błąd, anulowany, ukończony lub zamknięty.