Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Реализует асинхронный конечный автомат среды выполнения 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. Эта операция не влияет, если состояние ошибки уже является ошибкой, отменено, завершено или закрыто.