Task<TResult> Třída

Definice

Představuje asynchronní operaci, která může vrátit hodnotu.

generic <typename TResult>
public ref class Task : System::Threading::Tasks::Task
public class Task<TResult> : System.Threading.Tasks.Task
type Task<'Result> = class
    inherit Task
Public Class Task(Of TResult)
Inherits Task

Parametry typu

TResult

Typ výsledku vytvořeného tímto Task<TResult>.

Dědičnost
Task<TResult>

Poznámky

Třída Task<TResult> představuje jednu operaci, která vrací hodnotu a která se obvykle provádí asynchronně. Task<TResult> objekty jsou jednou z centrálních součástí asynchronního vzoru založeného na úlohách , který byl poprvé zaveden v rozhraní .NET Framework 4. Vzhledem k tomu, že práce prováděná objektem Task<TResult> se obvykle provádí asynchronně ve vlákně fondu vláken místo synchronně na hlavním vlákně aplikace, můžete pomocí Status vlastnosti IsCanceled, IsCompleteda IsFaulted určit stav úlohy. Nejčastěji se výraz lambda používá k určení práce, kterou má úkol provést.

Task<TResult> instance mohou být vytvořeny různými způsoby. Nejběžnějším přístupem, který je k dispozici počínaje rozhraním .NET Framework 4.5, je volání statické Task.Run<TResult>(Func<TResult>) metody nebo Task.Run<TResult>(Func<TResult>, CancellationToken) metody. Tyto metody poskytují jednoduchý způsob, jak spustit úlohu pomocí výchozích hodnot a bez získání dalších parametrů. Následující příklad používá metodu Task.Run<TResult>(Func<TResult>) ke spuštění úlohy, která se smyčuje a pak zobrazí počet iterací smyčky:

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var t = Task<int>.Run( () => {
                                      // Just loop.
                                      int max = 1000000;
                                      int ctr = 0;
                                      for (ctr = 0; ctr <= max; ctr++) {
                                         if (ctr == max / 2 && DateTime.Now.Hour <= 12) {
                                            ctr++;
                                            break;
                                         }
                                      }
                                      return ctr;
                                    } );
      Console.WriteLine("Finished {0:N0} iterations.", t.Result);
   }
}
// The example displays output like the following:
//        Finished 1,000,001 loop iterations.
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t As Task(Of Integer) = Task.Run(Function()
                                  Dim max As Integer = 1000000
                                  Dim ctr As Integer
                                  For ctr = 0 to max
                                     If ctr = max \ 2 And Date.Now.Hour <= 12 Then
                                        ctr += 1
                                        Exit For
                                     End If
                                  Next
                                  Return ctr
                               End Function)
      Console.WriteLine("Finished {0:N0} iterations.", t.Result)
   End Sub
End Module
' The example displays the following output:
'       Finished 1,000,001 loop iterations

Alternativou a nejběžnějším způsobem spuštění úlohy v rozhraní .NET Framework 4 je volání statické TaskFactory.StartNew metody nebo TaskFactory<TResult>.StartNew metody. Vlastnost Task.Factory vrátí TaskFactory objekt a Task<TResult>.Factory vlastnost vrátí TaskFactory<TResult> objekt. Přetížení jejich StartNew metody umožňují předávat argumenty, definovat možnosti vytváření úkolů a určit plánovač úkolů. Následující příklad používá metodu TaskFactory<TResult>.StartNew(Func<TResult>) ke spuštění úlohy. Je funkčně ekvivalentní kódu v předchozím příkladu.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var t = Task<int>.Factory.StartNew( () => {
                                      // Just loop.
                                      int max = 1000000;
                                      int ctr = 0;
                                      for (ctr = 0; ctr <= max; ctr++) {
                                         if (ctr == max / 2 && DateTime.Now.Hour <= 12) {
                                            ctr++;
                                            break;
                                         }
                                      }
                                      return ctr;
                               } );
      Console.WriteLine("Finished {0:N0} iterations.", t.Result);
   }
}
// The example displays the following output:
//        Finished 1000001 loop iterations
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t = Task(Of Integer).Factory.StartNew(Function()
                                  Dim max As Integer = 1000000
                                  Dim ctr As Integer
                                  For ctr = 0 to max
                                     If ctr = max \ 2 And Date.Now.Hour <= 12 Then
                                       ctr += 1
                                       Exit For
                                     End If
                                  Next
                                  Return ctr
                               End Function)
      Console.WriteLine("Finished {0:N0} iterations.", t.Result)
   End Sub
End Module
' The example displays output like the following:
'       Finished 1,000,001 iterations

Úplnější příklady najdete v tématu Asynchronní programování založené na úlohách.

Třída Task<TResult> také poskytuje konstruktory, které inicializují úlohu, ale neplánují její spuštění. Z důvodů výkonu Task.Run jsou metody a Task.Factory.StartNew upřednostňovaným mechanismem pro vytváření a plánování výpočetních úloh, ale ve scénářích, ve kterých musí být vytváření a plánování úkolů oddělené, mohou být použity konstruktory a metoda úkolu Start pak může být použita k naplánování provedení úkolu na později.

Počínaje desktopovými aplikacemi, které cílí na rozhraní .NET Framework 4.6, se jazyková verze vlákna, která vytváří a vyvolává úlohu, stává součástí kontextu vlákna. To znamená, že bez ohledu na aktuální jazykovou verzi vlákna, na které se úloha provádí, je aktuální jazyková verze úlohy jazykovou verzí volajícího vlákna. U aplikací, které cílí na verze rozhraní .NET Framework před rozhraním .NET Framework 4.6, je jazyková verze úlohy jazyková verze vlákna, na které se úloha spouští. Další informace najdete v části "Jazykové verze a asynchronní operace založené na úlohách" v CultureInfo tématu. Všimněte si, že aplikace pro Store se řídí prostředí Windows Runtime v nastavení a získávají výchozí jazykovou verzi.

Pro operace, které nevrací hodnotu, použijte Task třídu . Počínaje jazykem C# 7.0 použijte pro jednodušší úlohu, která je hodnotovým typem, nikoli referenčním typem System.Threading.Tasks.ValueTask<TResult> , strukturu.

Konstruktory

Task<TResult>(Func<Object,TResult>, Object)

Inicializuje nový Task<TResult> se zadanou funkcí a stavem.

Task<TResult>(Func<Object,TResult>, Object, CancellationToken)

Inicializuje nový Task<TResult> pomocí zadané akce, stavu a možností.

Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)

Inicializuje nový Task<TResult> pomocí zadané akce, stavu a možností.

Task<TResult>(Func<Object,TResult>, Object, TaskCreationOptions)

Inicializuje nový Task<TResult> pomocí zadané akce, stavu a možností.

Task<TResult>(Func<TResult>)

Inicializuje nový Task<TResult> se zadanou funkcí.

Task<TResult>(Func<TResult>, CancellationToken)

Inicializuje nový Task<TResult> se zadanou funkcí.

Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)

Inicializuje nový Task<TResult> se zadanou funkcí a možnostmi vytvoření.

Task<TResult>(Func<TResult>, TaskCreationOptions)

Inicializuje nový Task<TResult> se zadanou funkcí a možnostmi vytvoření.

Vlastnosti

AsyncState

Získá stav objektu zadaný při Task vytvoření nebo null, pokud nebyl zadán.

(Zděděno od Task)
CreationOptions

TaskCreationOptions Získá objekt použitý k vytvoření této úlohy.

(Zděděno od Task)
Exception

Získá, AggregateException která způsobila Task předčasné ukončení. Pokud se Task operace úspěšně dokončila nebo ještě nevyvolá žádné výjimky, vrátí nullse .

(Zděděno od Task)
Factory

Získá metodu továrny pro vytváření a konfiguraci Task<TResult> instancí.

Id

Získá ID pro tuto Task instanci.

(Zděděno od Task)
IsCanceled

Získá, zda tato Task instance dokončil provádění z důvodu zrušení.

(Zděděno od Task)
IsCompleted

Získá hodnotu, která označuje, zda úkol byl dokončen.

(Zděděno od Task)
IsCompletedSuccessfully

Získá, zda úkol byl dokončen.

(Zděděno od Task)
IsFaulted

Získá, zda Task dokončeno z důvodu neošetřené výjimky.

(Zděděno od Task)
Result

Získá výslednou hodnotu tohoto Task<TResult>.

Status

Získá z TaskStatus tohoto úkolu.

(Zděděno od Task)

Metody

ConfigureAwait(Boolean)

Konfiguruje operátor awaiter, který se používá k vyčkávanému objektu Task<TResult>.

ConfigureAwait(Boolean)

Konfiguruje operátor awaiter, který se používá k vyčkávanému objektu Task.

(Zděděno od Task)
ConfigureAwait(ConfigureAwaitOptions)

Konfiguruje operátor awaiter, který se používá k vyčkávanému objektu Task.

ConfigureAwait(ConfigureAwaitOptions)

Konfiguruje operátor awaiter, který se používá k vyčkávanému objektu Task.

(Zděděno od Task)
ContinueWith(Action<Task,Object>, Object)

Vytvoří pokračování, které obdrží informace o stavu zadané volajícím a spustí se po dokončení cíle Task .

(Zděděno od Task)
ContinueWith(Action<Task,Object>, Object, CancellationToken)

Vytvoří pokračování, které obdrží informace o stavu zadané volajícím a token zrušení a který se spustí asynchronně po dokončení cíle Task .

(Zděděno od Task)
ContinueWith(Action<Task,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

Vytvoří pokračování, které obdrží informace o stavu zadané volajícím a token zrušení a který se spustí po dokončení cíle Task . Pokračování se provádí na základě sady zadaných podmínek a používá zadaný plánovač.

(Zděděno od Task)
ContinueWith(Action<Task,Object>, Object, TaskContinuationOptions)

Vytvoří pokračování, které obdrží informace o stavu zadané volajícím a spustí se po dokončení cíle Task . Pokračování se spustí na základě sady zadaných podmínek.

(Zděděno od Task)
ContinueWith(Action<Task,Object>, Object, TaskScheduler)

Vytvoří pokračování, které obdrží informace o stavu zadané volajícím a provede asynchronně po dokončení cíle Task . Pokračování používá zadaný plánovač.

(Zděděno od Task)
ContinueWith(Action<Task<TResult>,Object>, Object)

Vytvoří pokračování, které se předají informace o stavu a které se spustí po dokončení cíle Task<TResult> .

ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken)

Vytvoří pokračování, které se spustí po dokončení cíle Task<TResult> .

ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

Vytvoří pokračování, které se spustí po dokončení cíle Task<TResult> .

ContinueWith(Action<Task<TResult>,Object>, Object, TaskContinuationOptions)

Vytvoří pokračování, které se spustí po dokončení cíle Task<TResult> .

ContinueWith(Action<Task<TResult>,Object>, Object, TaskScheduler)

Vytvoří pokračování, které se spustí po dokončení cíle Task<TResult> .

ContinueWith(Action<Task<TResult>>)

Vytvoří pokračování, které se spustí asynchronně po dokončení cílové úlohy.

ContinueWith(Action<Task<TResult>>, CancellationToken)

Vytvoří zrušitelné pokračování, které se spustí asynchronně po dokončení cíle Task<TResult> .

ContinueWith(Action<Task<TResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Vytvoří pokračování, které se spustí podle podmínky zadané v continuationOptions.

ContinueWith(Action<Task<TResult>>, TaskContinuationOptions)

Vytvoří pokračování, které se spustí podle podmínky zadané v continuationOptions.

ContinueWith(Action<Task<TResult>>, TaskScheduler)

Vytvoří pokračování, které se spustí asynchronně po dokončení cíle Task<TResult> .

ContinueWith(Action<Task>)

Vytvoří pokračování, které se spustí asynchronně po dokončení cíle Task .

(Zděděno od Task)
ContinueWith(Action<Task>, CancellationToken)

Vytvoří pokračování, které obdrží token zrušení a provede se asynchronně po dokončení cíle Task .

(Zděděno od Task)
ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Vytvoří pokračování, které se spustí, když cílová úloha konkuruje podle zadaného TaskContinuationOptions. Pokračování obdrží token zrušení a použije zadaný plánovač.

(Zděděno od Task)
ContinueWith(Action<Task>, TaskContinuationOptions)

Vytvoří pokračování, které se spustí po dokončení cílové úlohy podle zadaného TaskContinuationOptionsobjektu .

(Zděděno od Task)
ContinueWith(Action<Task>, TaskScheduler)

Vytvoří pokračování, které se spustí asynchronně po dokončení cíle Task . Pokračování používá zadaný plánovač.

(Zděděno od Task)
ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object)

Vytvoří pokračování, které se spustí po dokončení cíle Task<TResult> .

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken)

Vytvoří pokračování, které se spustí po dokončení cíle Task<TResult> .

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

Vytvoří pokračování, které se spustí po dokončení cíle Task<TResult> .

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskContinuationOptions)

Vytvoří pokračování, které se spustí po dokončení cíle Task<TResult> .

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskScheduler)

Vytvoří pokračování, které se spustí po dokončení cíle Task<TResult> .

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>)

Vytvoří pokračování, které se spustí asynchronně po dokončení cíle Task<TResult> .

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken)

Vytvoří pokračování, které se spustí asynchronně po dokončení cíle Task<TResult> .

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Vytvoří pokračování, které se spustí v souladu s podmínkou zadanou v continuationOptions.

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskContinuationOptions)

Vytvoří pokračování, které se spustí v souladu s podmínkou zadanou v continuationOptions.

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskScheduler)

Vytvoří pokračování, které se spustí asynchronně po dokončení cíle Task<TResult> .

ContinueWith<TResult>(Func<Task,Object,TResult>, Object)

Vytvoří pokračování, které přijímá informace o stavu zadané volajícím a provádí asynchronně, když cíl Task dokončí a vrátí hodnotu.

(Zděděno od Task)
ContinueWith<TResult>(Func<Task,Object,TResult>, Object, CancellationToken)

Vytvoří pokračování, které se spustí asynchronně, když se cíl Task dokončí a vrátí hodnotu. Pokračování obdrží informace o stavu zadané volajícím a token zrušení.

(Zděděno od Task)
ContinueWith<TResult>(Func<Task,Object,TResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

Vytvoří pokračování, které se spustí na základě zadaných možností pokračování úkolu, když cíl Task dokončí a vrátí hodnotu. Pokračování obdrží informace o stavu zadané volajícím a token zrušení a použije zadaný plánovač.

(Zděděno od Task)
ContinueWith<TResult>(Func<Task,Object,TResult>, Object, TaskContinuationOptions)

Vytvoří pokračování, které se spustí na základě zadaných možností pokračování úkolu po dokončení cíle Task . Pokračování obdrží informace o stavu zadané volajícím.

(Zděděno od Task)
ContinueWith<TResult>(Func<Task,Object,TResult>, Object, TaskScheduler)

Vytvoří pokračování, které se spustí asynchronně po dokončení cíle Task . Pokračování obdrží informace o stavu zadané volajícím a používá zadaný plánovač.

(Zděděno od Task)
ContinueWith<TResult>(Func<Task,TResult>)

Vytvoří pokračování, které se spustí asynchronně, když se cíl Task<TResult> dokončí a vrátí hodnotu.

(Zděděno od Task)
ContinueWith<TResult>(Func<Task,TResult>, CancellationToken)

Vytvoří pokračování, které se spustí asynchronně, když se cíl Task dokončí a vrátí hodnotu. Pokračování obdrží token zrušení.

(Zděděno od Task)
ContinueWith<TResult>(Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Vytvoří pokračování, které se spustí podle zadaných možností pokračování a vrátí hodnotu. Pokračování se předá token zrušení a použije zadaný plánovač.

(Zděděno od Task)
ContinueWith<TResult>(Func<Task,TResult>, TaskContinuationOptions)

Vytvoří pokračování, které se spustí podle zadaných možností pokračování a vrátí hodnotu.

(Zděděno od Task)
ContinueWith<TResult>(Func<Task,TResult>, TaskScheduler)

Vytvoří pokračování, které se spustí asynchronně, když se cíl Task dokončí a vrátí hodnotu. Pokračování používá zadaný plánovač.

(Zděděno od Task)
Dispose()

Uvolní všechny prostředky používané aktuální instancí Task třídy .

(Zděděno od Task)
Dispose(Boolean)

Odstraní a Taskuvolní všechny své nespravované prostředky.

(Zděděno od Task)
Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetAwaiter()

Získá čekání použité k čekání na tento Task<TResult>.

GetAwaiter()

Získá operátor awaiter, který se použije k vyčkávacímu objektu Task.

(Zděděno od Task)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
RunSynchronously()

Task Spouští synchronně na aktuálním TaskScheduler.

(Zděděno od Task)
RunSynchronously(TaskScheduler)

Spustí synchronně Task na zadaném .TaskScheduler

(Zděděno od Task)
Start()

TaskSpustí a naplánuje jeho spuštění na aktuální TaskScheduler.

(Zděděno od Task)
Start(TaskScheduler)

TaskSpustí a naplánuje jeho spuštění na zadanou TaskSchedulerhodnotu .

(Zděděno od Task)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
Wait()

Čeká na Task dokončení spuštění.

(Zděděno od Task)
Wait(CancellationToken)

Čeká na Task dokončení spuštění. Čekání se ukončí, pokud je token zrušení zrušen před dokončením úlohy.

(Zděděno od Task)
Wait(Int32)

Čeká na Task dokončení spuštění v zadaném počtu milisekund.

(Zděděno od Task)
Wait(Int32, CancellationToken)

Čeká na Task dokončení spuštění. Čekání se ukončí, pokud uplynou interval časového limitu nebo se před dokončením úlohy zruší token zrušení.

(Zděděno od Task)
Wait(TimeSpan)

Čeká na Task dokončení spuštění v zadaném časovém intervalu.

(Zděděno od Task)
Wait(TimeSpan, CancellationToken)

Čeká na Task dokončení spuštění.

(Zděděno od Task)
WaitAsync(CancellationToken)

Získá Task<TResult> , který se dokončí, když se to Task<TResult> dokončí nebo když zadaný CancellationToken má požadavek na zrušení.

WaitAsync(CancellationToken)

Task Získá, která bude dokončena po dokončení nebo Task když zadaný CancellationToken má požadavek na zrušení.

(Zděděno od Task)
WaitAsync(TimeSpan)

Získá Task<TResult> , který se dokončí po dokončení nebo Task<TResult> při vypršení zadaného časového limitu.

WaitAsync(TimeSpan)

Task Získá, která bude dokončena po dokončení nebo Task po vypršení zadaného časového limitu.

(Zděděno od Task)
WaitAsync(TimeSpan, CancellationToken)

Získá Task<TResult> , který se dokončí po dokončení Task<TResult> , při vypršení zadaného časového limitu nebo když zadaný CancellationToken má požadavek na zrušení.

WaitAsync(TimeSpan, CancellationToken)

Task Získá, která bude dokončena po dokončení tétoTask, po vypršení zadaného časového limitu nebo když zadaný CancellationToken požadavek zrušení.

(Zděděno od Task)
WaitAsync(TimeSpan, TimeProvider)

Získá Task<TResult> , který se dokončí po dokončení nebo Task<TResult> při vypršení zadaného časového limitu.

WaitAsync(TimeSpan, TimeProvider)

Task Získá, která bude dokončena po dokončení nebo Task po vypršení zadaného časového limitu.

(Zděděno od Task)
WaitAsync(TimeSpan, TimeProvider, CancellationToken)

Získá Task<TResult> , který se dokončí po dokončení Task<TResult> , při vypršení zadaného časového limitu nebo když zadaný CancellationToken má požadavek na zrušení.

WaitAsync(TimeSpan, TimeProvider, CancellationToken)

Task Získá, která bude dokončena po dokončení tétoTask, po vypršení zadaného časového limitu nebo když zadaný CancellationToken požadavek zrušení.

(Zděděno od Task)

Explicitní implementace rozhraní

IAsyncResult.AsyncWaitHandle

WaitHandle Získá, který lze použít k čekání na dokončení úkolu.

(Zděděno od Task)
IAsyncResult.CompletedSynchronously

Získá indikaci, zda operace dokončena synchronně.

(Zděděno od Task)

Metody rozšíření

DispatcherOperationWait(Task)

Čeká neomezeně dlouho, než se podkladová DispatcherOperation hodnota dokončí.

DispatcherOperationWait(Task, TimeSpan)

Čeká na zadanou dobu, než se podkladová DispatcherOperation hodnota dokončí.

IsDispatcherOperationTask(Task)

Vrátí hodnotu, která označuje, zda Task je přidružená k DispatcherOperation.

AsAsyncAction(Task)

Vrátí prostředí Windows Runtime asynchronní akci, která představuje spuštěnou úlohu.

AsAsyncOperation<TResult>(Task<TResult>)

Vrátí prostředí Windows Runtime asynchronní operaci, která představuje spuštěnou úlohu, která vrací výsledek.

Platí pro

Bezpečný přístup z více vláken

Všichni členové nástroje Task<TResult>s výjimkou jsou bezpečné pro Dispose()přístup z více vláken a je možné je používat současně z více vláken.

Viz také