Поделиться через


Функция create_async

Создает конструкцию среды выполнения асинхронной предоставленного пользователем windows, основанную на объекте lambda или функции.Возвращаемый тип create_async одно из IAsyncAction^ или IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ или IAsyncOperationWithProgress<TResult, TProgress>^ на основе подписи лямбда-выражения, переданного методу.

template<
   typename _Function
>
auto create_async(
   const _Function& _Func
) -> decltype(ref new details::_AsyncTaskGeneratorThunk<_Function>(_Func));

Параметры

  • _Function

  • _Func
    Объект lambda или функции из которого будет создан во время выполнения асинхронной конструкция windows.

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

Асинхронная конструкция, представленная ^ IAsyncAction^, IAsyncActionWithProgress<TProgress>, ^ IAsyncOperation<TResult>или ^ IAsyncOperationWithProgress<TResult, TProgress>.Интерфейс, зависит от сигнатуры лямбда-выражения, передаваемый в функцию.

Заметки

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

Lambdas, возвращает пустую причину создание действий.Lambdas, которое возвращает результат причины TResult типа TResult создание операций.

Лямбда-выражения могут также возвращать task<TResult>, который инкапсулирует aysnchronous работ в рамках себя или продолжение цепочки задач, представляющих асинхронную работу.В этом случае сам lambda выполненный встроенный, поскольку задачи один, которые выполняются асинхронно и возвращаемый тип лямбда-выражения развернут для создания асинхронной конструкцию, возвращаемую create_async.Это означает, что лямбда-выражения, который возвращает задачу<void>, вызовет создание действий и лямбда-выражения, который возвращает задачу<TResult>, вызовет создание операций TResult.

Лямбда-выражения может выполнить любой ноль, один или два аргумента.Допустимые аргументы progress_reporter<TProgress> и cancellation_token в этом порядке, если оба используются.Lambda без аргументов вызывает создание асинхронного проектирования без возможности для отчета о ходе выполнения.Лямбда-выражения, который принимает progress_reporter<TProgress> приведет к create_async вернуть асинхронную конструкцию, которая отслеживания хода отчетов типа TProgress каждый раз progress_reporter вызывают метод report объекта.Лямбда-выражения, который принимает cancellation_token может использовать этот маркер для проверки отмены или передается задачам, она создает таким образом, что отмена асинхронной разработке вызывает отмену этих задач.

Если тело объекта lambda или функции возвращается результат (а не задачу<TResult>), то lamdba будет выполняться асинхронно в рамках процесса многопотокового подразделения в контексте задачи неявно среда выполнения создает для него.Метод IAsyncInfo::Cancel вызывает отмену неявной задачи.

Если тело лямбда-выражения получает задачу, lamba выполняет встроенный и путем объявления лямбда-выражения для принятия аргументу типа cancellation_token можно активировать отмена всех задач создании внутри лямбда-выражения путем передачи в этот токен при создании их.Можно также использовать метод register_callback на токене, чтобы среда выполнения вызова метода обратного вызова при вызове IAsyncInfo::Cancel в создаваемых операции или действия async.

Эта функция доступна только к приложениям в стиле Metro.

Требования

заголовок: ppltasks.h

Параллелизм пространство имен:

См. также

Ссылки

Пространство имен concurrency

Класс task

Класс progress_reporter

Другие ресурсы

cancelation_token Class