Freigeben über


create_async-Funktion

Erstellt ein asynchrones Konstrukt Windows Runtime auf einem Benutzer angegebenes Lambda oder ein Funktionsobjekt.Der Rückgabetyp von create_async ist einer von IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ oder IAsyncOperationWithProgress<TResult, TProgress>^ auf Grundlage der Signatur des Lambdaausdrucks, das an die Methode übergeben wird.

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

Parameter

  • _Function

  • _Func
    Das Lambda oder von denen das Funktionsobjekt, um einen asynchronen Konstrukts Windows Runtime zu erstellen.

Rückgabewert

Ein asynchrones Konstrukt dargestellt durch ein ^ IAsyncAction^, IAsyncActionWithProgress<TProgress>, ^ IAsyncOperation<TResult>oder ^ IAsyncOperationWithProgress<TProgress, TResult>.Die Schnittstelle, die zurückgegeben wird, hängt von der Signatur des Lambdaausdrucks ab, das an die Funktion übergeben wird.

Hinweise

Der Rückgabetyp des Lambdaausdrucks bestimmt, ob das Konstrukt eine Aktion oder ein Vorgang darstellt.

Lambdas, das ungültige Ursache die Erstellung von Aktionen zurückgeben.Lambdas, das ein Ergebnis vom Typ TResult Ursache die Erstellung von Vorgängen von TResult zurückgeben.

Das Lambda gibt möglicherweise auch task<TResult> zurück, das die aysnchronous Arbeit in sich selbst kapselt oder die Fortsetzung einer Kette der Aufgaben, die auf die asynchrone Arbeit darstellen.In diesem Fall wird das Lambda auch inline ausgeführt, da die Aufgaben sind, die asynchron ausführen, und der Rückgabetyp des Lambdaausdrucks wird ausgepackt, um das asynchrone Konstrukt zu erzeugen, die durch create_async zurückgegeben wurde.Dies bedeutet, dass ein Lambda, das eine Aufgabe<void> zurückgibt, die Erstellung von Aktionen ausführt, und ein Lambda, das eine Aufgabe<TResult> zurückgibt, bewirkt die Erstellung von Operationen aus. TResult

Das Lambda kann jedes (null), einem oder zwei Argumente.Die stichhaltigen Argumente sind progress_reporter<TProgress> und cancellation_token, in dieser Reihenfolge, wenn beide verwendet werden.Ein Lambdaausdruck ohne Argumente verursacht die Erstellung eines asynchronen Konstrukts ohne die Funktion für Status berichterstellung.Ein Lambdaausdruck, das ein progress_reporter<TProgress> hat, löst create_async, ein asynchrones Konstrukt, das zurückgegeben werden soll TProgress des Typs des Berichts jedes Mal die report progress_reporter - Methode des Objekts aufgerufen wird.Ein Lambdaausdruck, das ein cancellation_token verwendet dieses Token verwendet werden, um nach einem Abbruch zu suchen und führen ihn zu den Aufgaben, die er erstellt wird, damit das Abbrechen des asynchronen Abbruchs Konstrukts verursacht dieser Aufgaben.

Wenn der Text des Lambdaausdrucks oder eines Funktionsobjekts ein Ergebnis (und keine Aufgabe<TResult>) zurückgibt, wird das lamdba innerhalb des Prozesses asynchron MTA im Kontext einer Aufgabe ausgeführt, die die Laufzeit implizit für sie erstellt.Die IAsyncInfo::Cancel-Methode bewirkt, dass der Abbruch der impliziten Aufgabe.

Wenn der Text des Lambdaausdrucks eine Aufgabe zurückgibt, wird das lamba inline ausgeführt, und indem es den Lambdaausdruck, der deklariert, ein Argument des Typs cancellation_token Sie können auf Abbruch aller Aufgaben gestartet haben, die Sie innerhalb des Lambdaausdrucks erstellen, indem Sie diese Token in übergeben, wenn Sie sie erstellen.Sie können auch die register_callback-Methode auf dem Token, um die Laufzeit, dass ein Rückruf aufgerufen werden soll, wenn Sie im IAsyncInfo::Cancel async Operation oder der Aktion aufrufen, die. erzeugt wird.

Diese Funktion ist für App im Metro-Stils nur verfügbar.

Anforderungen

Header: ppltasks.h

Namespace: Parallelität

Siehe auch

Referenz

concurrency-Namespace

Aufgaben-Klasse

progress_reporter-Klasse

Weitere Ressourcen

cancelation_token Class