Udostępnij za pośrednictwem


create_async — Funkcja

Tworzy konstrukcję asynchroniczną środowiska wykonawczego systemu Windows w oparciu o dostarczony przez użytkownika obiekt lambda lub obiekt funkcyjny.Zwracanym typem metody create_async jest IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ lub IAsyncOperationWithProgress<TResult, TProgress>^, zależnie od podpisu wyrażenia lambda przekazanego do metody.

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

Parametry

  • _Function

  • _Func
    Obiekt wyrażenia lambda lub funkcji służący do utworzenia konstrukcji asynchronicznej środowiska wykonawczego systemu Windows.

Wartość zwracana

Konstrukt asynchroniczny, reprezentowany przez IAsyncAction ^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^, lub IAsyncOperationWithProgress<TResult, TProgress>^.Zawracany interfejs zależy od podpisu wyrażenia lambda przekazanego do funkcji.

Uwagi

Zwracany typ wyrażenia lambda określa, czy konstrukcja jest akcją, czy operacją.

Lambdy, które zwracają void, powodują tworzenie akcji.Lambdy, które zwracają wynik o typie TResult powodują powstawanie operacji TResult.

Wyrażenie lambda może również zwracać obiekt task<TResult>, który hermetyzuje pracę asynchroniczną w sobie lub jest kontynuacją łańcucha zadań reprezentującego pracę asynchroniczną.W tym przypadku Lambda jest sam wykonywany w tekście, ponieważ zadania są tymi, które działają asynchronicznie, a zwracany typ Lambda jest nieopakowanych, aby produkować asynchroniczne konstrukcje zwracane przez create_async.Oznacza to, że lambda zwracająca <void> zadania spowoduje tworzenie działań, a lambda, która zwraca <TResult> zadania spowoduje utworzenie operacji TResult.

Wyrażenie lambda może mieć zero, jeden lub dwa argumenty.Prawidłowe argumenty to progress_reporter<TProgress> i cancellation_token, w tej kolejności, jeśli oba są używane.Lambda bez argumentów powoduje utworzenie asynchronicznego konstruktu bez możliwości raportowania postępu.Lambda, która pobiera progress_reporter<TProgress>, powoduje zwracanie przez create_async asynchronicznego konstruktu, wykazującego postęp typu TProgress, zawsze, gdy wywoływana jest metoda report obiektu progress_reporter.Lambda, która pobiera cancellation_token może stosować ten token do sprawdzania występowania unieważnienia lub przekazywania go do zadań, które tworzy tak, że anulowanie asynchronicznego konstruktu powoduje unieważnienie tych zadań.

Jeśli treść obiektu lambda lub funkcji zwraca wynik (a nie task<TResult>), obiekt lambda będzie wykonywany asynchronicznie w ramach wielowątkowego przedziału procesu w kontekście zadania, które środowisko uruchomieniowe niejawnie tworzy dla niego.Metoda IAsyncInfo::Cancel spowoduje anulowanie zadania niejawnego.

Jeśli treść obiektu lambda zwraca zadanie, obiekt lambda jest wykonywany wewnątrz kodu, a deklarując, że obiekt lambda ma przyjmować argument typu cancellation_token, można inicjować anulowanie wszystkich zadań tworzonych w obiekcie lambda przez przekazanie tego tokenu podczas ich tworzenia.Można także użyć metody register_callback na tokenie, aby spowodować, że środowisko uruchomieniowe wykona wywołanie zwrotne, gdy wywołujemy IAsyncInfo::Cancel na asynchronicznej operacji lub utworzonym działaniu.

Ta funkcja jest dostępna tylko dla aplikacji do sklepu Windows Store.

Wymagania

Nagłówek: ppltasks.h

Przestrzeń nazw: concurrency

Zobacz też

Informacje

concurrency — Przestrzeń nazwy

task — Klasa

progress_reporter — Klasa

Inne zasoby

cancelation_token Class