IAsyncOperation<TResult> Интерфейс

Определение

Представляет асинхронную операцию, которая возвращает результат после завершения. Это тип возвращаемого значения для многих среда выполнения Windows асинхронных методов, которые имеют результаты, но не сообщают о ходе выполнения.

public interface class IAsyncOperation : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(2680336571, 58438, 17634, 170, 97, 156, 171, 143, 99, 106, 242)]
template <typename TResult>
struct IAsyncOperation : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(2680336571, 58438, 17634, 170, 97, 156, 171, 143, 99, 106, 242)]
public interface IAsyncOperation<TResult> : IAsyncInfo
Public Interface IAsyncOperation(Of TResult)
Implements IAsyncInfo

Параметры типа

TResult
Производный
Атрибуты
Реализации

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.FoundationContract (появилось в v1.0)

Комментарии

IAsyncOperation<TResult> — это тип возвращаемого значения для многих среда выполнения Windows асинхронных методов, которые имеют результат после завершения, но не сообщают о ходе выполнения. Это более 650 различных API-интерфейсов среда выполнения Windows. API, которые сообщают о ходе выполнения (и имеют результат), используют другой интерфейс IAsyncOperationWithProgress<TResult,TProgress>.

При использовании методов, возвращающих IAsyncOperation<TResult (с определенным ограничением TResult>) в коде приложения, обычно возвращаемое значение IAsyncOperation не обращается напрямую. Это связано с тем, что вы почти всегда используете синтаксис, доступный для конкретного языка. В этом случае очевидным возвращаемым значением метода является тип, предоставленный в качестве параметра TResult . Дополнительные сведения см. в асинхронном программировании или в одном из руководств по языку для среда выполнения Windows асинхронного программирования (вызов асинхронных API в C# или Visual Basic, C++, JavaScript).

Обычно не используется IAsyncOperation<TResult> напрямую, даже если не используется синтаксис, зависящий от языка. Каждый из языков имеет точки расширения, которые обычно проще использовать, чем интерфейс среда выполнения Windows. В JavaScript есть WinJS.Promise, а затем и синтаксис done . В .NET есть метод расширения AsTask, и после преобразования IAsyncOperation<TResult в объект Task<TResult>> проще получить результат, отменить, получить уведомление о завершении и т. д. Для C++/CX можно упаковать вызовы с помощью среды выполнения параллелизма (и использовать create_task). Другими словами, IAsyncOperation<TResult> можно рассматривать как инфраструктуру уровня среды выполнения, которую каждый из языков использует в качестве платформы для поддержки ожидаемого синтаксиса или асинхронных моделей программирования.

Вместо использования IAsyncOperation<TResult> некоторые среда выполнения Windows асинхронные методы используют настраиваемые типы операций. Например, DataReaderLoadOperation — это тип среда выполнения Windows, который реализует IAsyncOperation с помощью uint в качестве типа результата. Затем тип DataReaderLoadOperation используется в качестве настраиваемого типа операции или результата для метода DataReader.LoadAsync .

Функции расширения C++/WinRT

Примечание

Функции расширения существуют в типах проекций C++/WinRT для определенных api среда выполнения Windows. Например, winrt::Windows::Foundation::IAsyncAction является типом проекции C++/WinRT для IAsyncAction. Функции расширения не являются частью поверхности двоичного интерфейса приложения (ABI) фактических типов среда выполнения Windows, поэтому они не перечислены как члены api среда выполнения Windows. Но их можно вызывать из любого проекта C++/WinRT. См. функции C++/WinRT, расширяющие среда выполнения Windows API.

TResult get() const;

Синхронно ожидает завершения операции и возвращает завершенное значение. Создает соответствующее исключение, если операция отменена или вступает в состояние ошибки. Вы не должны вызывать его из однопотоковой квартиры. Дополнительные сведения и примеры кода, демонстрирующие вызов get, см. в разделе "Написание сопрограммы".

AsyncStatus wait_for(TimeSpan const& timeout) const;

Ожидает синхронно завершения операции или указанного времени ожидания. Возвращает состояние IAsyncOperation или AsyncStatus::Started , если истекло время ожидания. Если действие не истекло, вызовите Метод GetResults , чтобы получить результаты операции. Дополнительные сведения и примеры кода, показывающие, как вызывать wait_for, см. в статье об асинхронных тайм-аутах.

Наследование интерфейса

IAsyncOperation<TResult> наследует IAsyncInfo. Типы, реализующие IAsyncOperation<TResult> , также реализуют члены интерфейса IAsyncInfo:

Примечания для разработчиков

Как и при вызове существующих методов, существуют зависящие от языка способы определения асинхронных методов, которые не используют IAsyncOperation<TResult> напрямую. При написании кода с помощью .NET метод может возвращать объект Task<TResult>. Для C++/CX можно использовать среду выполнения параллелизма. Однако если вы определяете компонент, можно использоватьзадачу "Задача/" внутри организации, но необходимо вернуть один из интерфейсов среда выполнения Windows для открытых методов. Асинхронные типы поддержки для конкретного языка (и многие другие типы, которые можно использовать в коде) нельзя использовать для общедоступной контактной зоны компонента среда выполнения Windows.

Свойства

Completed

Возвращает или задает метод, обрабатывающий уведомление о завершении операции.

ErrorCode

Возвращает строку, описывающую условие ошибки асинхронной операции.

(Унаследовано от IAsyncInfo)
Id

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

(Унаследовано от IAsyncInfo)
Status

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

(Унаследовано от IAsyncInfo)

Методы

Cancel()

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

(Унаследовано от IAsyncInfo)
Close()

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

(Унаследовано от IAsyncInfo)
GetResults()

Возвращает результаты операции.

Применяется к

См. также раздел