IAsyncAction Интерфейс

Определение

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

public interface class IAsyncAction : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
struct IAsyncAction : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
public interface IAsyncAction : IAsyncInfo
Public Interface IAsyncAction
Implements IAsyncInfo
Производный
Атрибуты
Реализации

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

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

Комментарии

IAsyncAction — это возвращаемый тип для всех среда выполнения Windows асинхронных методов, которые не передают результирующий объект или текущий ход выполнения. Это более 300 различных API среда выполнения Windows. API, которые сообщают о ходе выполнения (но не имеют результата), используют другой интерфейс , IAsyncActionWithProgress<TProgress>.

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

IAsyncAction также является типом входных данных для некоторых API-интерфейсов программы расширенного сценария, таких как CoreDispatcher.RunAsync и ThreadPool.RunAsync.

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

Вместо использования IAsyncAction некоторые среда выполнения Windows асинхронные методы используют настраиваемые типы действий (имена которых могут содержать "Operation", а не "Action"). Например, SignOutUserOperation — это тип среда выполнения Windows, реализующий IAsyncAction. Затем тип SignOutUserOperation используется в качестве возвращаемого типа настраиваемого действия для метода SignOutUserAsync .

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

Примечание

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

void get() const;

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

AsyncStatus wait_for(TimeSpan const& timeout) const;

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

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

IAsyncAction наследует IAsyncInfo. Типы, реализующие IAsyncAction, также реализуют элементы интерфейса IAsyncInfo:

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

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

Свойства

Completed

Возвращает или задает делегат, который вызывается при завершении действия.

ErrorCode

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

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

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

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

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

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

Методы

Cancel()

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

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

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

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

Возвращает результаты действия.

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

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