AsyncBase - класс

Реализует асинхронный конечный автомат среды выполнения Windows.

Синтаксис

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

Параметры

TComplete
Обработчик событий, который вызывается при завершении асинхронной операции.

TProgress
Обработчик событий, вызывающийся при выполнении асинхронной операции, сообщает о текущем ходе выполнения операции.

resultType
Одно из значений перечисления AsyncResultType . По умолчанию SingleResult.

Участники

Открытые конструкторы

Имя Описание
AsyncBase::AsyncBase Инициализирует экземпляр класса AsyncBase.

Открытые методы

Имя Описание
AsyncBase::Cancel Отменяет асинхронную операцию.
AsyncBase::Close Закрывает асинхронную операцию.
AsyncBase::FireCompletion Вызывает обработчик событий завершения или сбрасывает внутренний делегат хода выполнения.
AsyncBase::FireProgresss Вызывает текущий обработчик событий процесса выполнения.
AsyncBase::get_ErrorCode Извлекает код ошибки для текущей асинхронной операции.
AsyncBase::get_Id Извлекает дескриптор асинхронной операции.
AsyncBase::get_Status Извлекает значение, указывающее состояние асинхронной операции.
AsyncBase::GetOnComplete Копирует адрес текущего обработчика событий завершения в указанную переменную.
AsyncBase::GetOnProgress Копирует адрес текущего обработчика событий процесса выполнения в указанную переменную.
AsyncBase::p ut_Id Задает дескриптор асинхронной операции.
AsyncBase::P utOnComplete Задает адрес обработчика событий завершения в указанное значение.
AsyncBase::P utOnProgress Задает адрес обработчика событий хода выполнения заданному значению.

Защищенные методы

Имя Описание
AsyncBase::CheckValidStateForDelegateCall Проверяет, можно ли изменять свойства делегата в текущем асинхронном состоянии.
AsyncBase::CheckValidStateForResultsCall Проверяет, можно ли собирать результаты асинхронной операции в текущем асинхронном состоянии.
AsyncBase::ContinueAsyncOperation Определяет, должна ли асинхронная операция продолжать обработку или останавливаться.
AsyncBase::CurrentStatus Извлекает состояние текущей асинхронной операции.
AsyncBase::ErrorCode Извлекает код ошибки для текущей асинхронной операции.
AsyncBase::OnCancel При переопределении в производном классе отменяет асинхронную операцию .
AsyncBase::OnClose При переопределении в производном классе закрывает асинхронную операцию.
AsyncBase::OnStart При переопределении в производном классе запускает асинхронную операцию.
AsyncBase::Start Запускает асинхронную операцию.
AsyncBase::TryTransitionToCompleted Указывает, завершена ли текущая асинхронная операция.
AsyncBase::TryTransitionToError Указывает, может ли указанный код ошибки изменить внутреннее состояние ошибки.

Иерархия наследования

AsyncBase

AsyncBase

Требования

Заголовок: async.h

Пространство имен: Microsoft::WRL

AsyncBase::AsyncBase

Инициализирует экземпляр класса AsyncBase.

AsyncBase();

AsyncBase::Cancel

Отменяет асинхронную операцию.

STDMETHOD(
   Cancel
)(void);

Возвращаемое значение

По умолчанию всегда возвращается S_OK.

Замечания

Cancel() — это реализация IAsyncInfo::Cancelпо умолчанию и не выполняет фактических действий. Чтобы фактически отменить асинхронную операцию, переопределите OnCancel() чистый виртуальный метод.

AsyncBase::CheckValidStateForDelegateCall

Проверяет, можно ли изменять свойства делегата в текущем асинхронном состоянии.

inline HRESULT CheckValidStateForDelegateCall();

Возвращаемое значение

S_OK, если можно изменить свойства делегата; в противном случае E_ILLEGAL_METHOD_CALL.

AsyncBase::CheckValidStateForResultsCall

Проверяет, можно ли собирать результаты асинхронной операции в текущем асинхронном состоянии.

inline HRESULT CheckValidStateForResultsCall();

Возвращаемое значение

S_OK, если результаты можно собирать; в противном случае E_ILLEGAL_METHOD_CALLE_ILLEGAL_METHOD_CALL.

AsyncBase::Close

Закрывает асинхронную операцию.

STDMETHOD(
   Close
)(void) override;

Возвращаемое значение

S_OK, если операция закрывается или уже закрыта; в противном случае E_ILLEGAL_STATE_CHANGE.

Замечания

Close() — это реализация IAsyncInfo::Closeпо умолчанию и не выполняет фактических действий. Чтобы закрыть асинхронную операцию, переопределите OnClose() чистый виртуальный метод.

AsyncBase::ContinueAsyncOperation

Определяет, должна ли асинхронная операция продолжать обработку или останавливаться.

inline bool ContinueAsyncOperation();

Возвращаемое значение

true Если текущее состояние асинхронной операции запущено, это означает, что операция должна продолжаться. В противном случае, это означает, falseчто операция должна остановиться.

AsyncBase::CurrentStatus

Извлекает состояние текущей асинхронной операции.

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

Параметры

состояние
Расположение, в котором эта операция сохраняет текущее состояние.

Замечания

Данная операция является потокобезопасной.

AsyncBase::ErrorCode

Извлекает код ошибки для текущей асинхронной операции.

inline void ErrorCode(
   HRESULT *error
);

Параметры

error
Расположение, в котором эта операция хранит текущий код ошибки.

Замечания

Данная операция является потокобезопасной.

AsyncBase::FireCompletion

Вызывает обработчик событий завершения или сбрасывает внутренний делегат хода выполнения.

void FireCompletion(
   void
) override;

virtual void FireCompletion();

Замечания

Первая версия сбрасывает внутреннюю переменную делегата FireCompletion() хода выполнения. Вторая версия вызывает обработчик событий завершения, если асинхронная операция завершена.

AsyncBase::FireProgresss

Вызывает текущий обработчик событий процесса выполнения.

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

Параметры

arg
Метод обработчика событий для запуска.

Замечания

ProgressTraits является производным от структуры ArgTraitsHelper.

AsyncBase::get_ErrorCode

Извлекает код ошибки для текущей асинхронной операции.

STDMETHOD(
   get_ErrorCode
)(HRESULT* errorCode) override;

Параметры

Errorcode
Расположение, в котором хранится текущий код ошибки.

Возвращаемое значение

S_OK в случае успешного выполнения; в противном случае E_ILLEGAL_METHOD_CALL, если текущая асинхронная операция закрыта.

AsyncBase::get_Id

Извлекает дескриптор асинхронной операции.

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

Параметры

id
Расположение, в котором должен храниться дескриптор.

Возвращаемое значение

S_OK в случае успешного выполнения; в противном случае E_ILLEGAL_METHOD_CALL.

Замечания

Этот метод реализует IAsyncInfo::get_Id.

AsyncBase::get_Status

Извлекает значение, указывающее состояние асинхронной операции.

STDMETHOD(
   get_Status
)(AsyncStatus *status) override;

Параметры

состояние
Расположение, в котором должно храниться состояние. Дополнительные сведения см. в перечислении Windows::Foundation::AsyncStatus .

Возвращаемое значение

S_OK в случае успешного выполнения; в противном случае E_ILLEGAL_METHOD_CALL.

Замечания

Этот метод реализует IAsyncInfo::get_Status.

AsyncBase::GetOnComplete

Копирует адрес текущего обработчика событий завершения в указанную переменную.

STDMETHOD(
   GetOnComplete
)(TComplete** completeHandler);

Параметры

completeHandler
Расположение, в котором хранится адрес текущего обработчика событий завершения.

Возвращаемое значение

S_OK в случае успешного выполнения; в противном случае E_ILLEGAL_METHOD_CALL.

AsyncBase::GetOnProgress

Копирует адрес текущего обработчика событий процесса выполнения в указанную переменную.

STDMETHOD(
   GetOnProgress
)(TProgress** progressHandler);

Параметры

progressHandler
Расположение, в котором сохраняется адрес текущего обработчика событий процесса выполнения.

Возвращаемое значение

S_OK в случае успешного выполнения; в противном случае E_ILLEGAL_METHOD_CALL.

AsyncBase::OnCancel

При переопределении в производном классе отменяет асинхронную операцию .

virtual void OnCancel(
   void
) = 0;

AsyncBase::OnClose

При переопределении в производном классе закрывает асинхронную операцию.

virtual void OnClose(
   void
) = 0;

AsyncBase::OnStart

При переопределении в производном классе запускает асинхронную операцию.

virtual HRESULT OnStart(
   void
) = 0;

AsyncBase::p ut_Id

Задает дескриптор асинхронной операции.

STDMETHOD(
   put_Id
)(const unsigned int id);

Параметры

id
Ненулевой дескриптор.

Возвращаемое значение

S_OK в случае успешного выполнения; в противном случае E_INVALIDARG или E_ILLEGAL_METHOD_CALL.

AsyncBase::P utOnComplete

Задает адрес обработчика событий завершения в указанное значение.

STDMETHOD(
   PutOnComplete
)(TComplete* completeHandler);

Параметры

completeHandler
Адрес, для которого задан обработчик событий завершения.

Возвращаемое значение

S_OK в случае успешного выполнения; в противном случае E_ILLEGAL_METHOD_CALL.

AsyncBase::P utOnProgress

Задает адрес обработчика событий хода выполнения заданному значению.

STDMETHOD(
   PutOnProgress
)(TProgress* progressHandler);

Параметры

progressHandler
Адрес, для которого задан обработчик событий хода выполнения.

Возвращаемое значение

S_OK в случае успешного выполнения; в противном случае E_ILLEGAL_METHOD_CALL.

AsyncBase::Start

Запускает асинхронную операцию.

STDMETHOD(
   Start
)(void);

Возвращаемое значение

S_OK, если операция запускается или уже запущена; в противном случае E_ILLEGAL_STATE_CHANGE.

Замечания

Start() — это защищенный метод, который не отображается внешне, так как асинхронные операции "горячий запуск" перед возвратом вызывающей стороны.

AsyncBase::TryTransitionToCompleted

Указывает, завершена ли текущая асинхронная операция.

bool TryTransitionToCompleted(
   void
);

Возвращаемое значение

true Значение falseв противном случае .

AsyncBase::TryTransitionToError

Указывает, может ли указанный код ошибки изменить внутреннее состояние ошибки.

bool TryTransitionToError(
   const HRESULT error
);

Параметры

error
Ошибка HRESULT.

Возвращаемое значение

true Значение , если состояние внутренней ошибки было изменено; falseв противном случае .

Замечания

Эта операция изменяет состояние ошибки только в том случае, если состояние ошибки уже установлено S_OK. Эта операция не влияет, если состояние ошибки уже является ошибкой, отменено, завершено или закрыто.