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
Inne zasoby
cancelation_token Class