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::Cancel
pracy. 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::Close
pracy. 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
true
jeś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.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla