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. Эта операция не влияет, если состояние ошибки уже является ошибкой, отменено, завершено или закрыто.