Task<TResult> Osztály

Definíció

Egy aszinkron műveletet jelöl, amely visszaadhat egy értéket.

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

Típusparaméterek

TResult

Az ennek Task<TResult>az eredménynek a típusa.

Öröklődés
Task<TResult>

Megjegyzések

Az Task<TResult> osztály egyetlen olyan műveletet jelöl, amely egy értéket ad vissza, és általában aszinkron módon hajtja végre. Task<TResult> az objektumok a . NET-keretrendszer 4-ben először bevezetett feladatalapú aszinkron minta egyik központi összetevői. Mivel a Task<TResult> objektum által végzett munka általában aszinkron módon hajtódik végre egy szálkészlet szálon, nem pedig szinkron módon a fő alkalmazásszálon, a Status tulajdonságot, valamint a IsCanceled, IsCompleted és IsFaulted tulajdonságokat használhatja a tevékenység állapotának meghatározásához. Leggyakrabban lambda kifejezéssel adhatja meg a feladat végrehajtásához szükséges munkát.

Task<TResult> példányok többféleképpen hozhatók létre. A .NET Framework 4.5-től kezdve elérhető leggyakoribb módszer a statikus Task.Run<TResult>(Func<TResult>) vagy Task.Run<TResult>(Func<TResult>, CancellationToken) metódus meghívása. Ezek a metódusok egyszerű módot nyújtanak a tevékenységek indítására az alapértelmezett értékek használatával, további paraméterek beszerzése nélkül. Az alábbi példa a Task.Run<TResult>(Func<TResult>) metódust használja egy olyan tevékenység elindításához, amely hurkokat hoz létre, majd megjeleníti a ciklus iterációinak számát:

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

A feladat .NET Framework 4-ben való elindításának egyik módja a statikus TaskFactory.StartNew vagy TaskFactory<TResult>.StartNew metódus meghívása. A Task.Factory tulajdonság egy TaskFactory objektumot ad vissza, a Task<TResult>.Factory tulajdonság pedig egy TaskFactory<TResult> objektumot. A metódus túlterhelése StartNew lehetővé teszi az argumentumok átadását, a tevékenységlétrehozási beállítások megadását és a feladatütemező megadását. Az alábbi példa a TaskFactory<TResult>.StartNew(Func<TResult>) metódus használatával indít el egy feladatot. Ez funkcionálisan egyenértékű az előző példában szereplő kóddal.

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

További részletes példákért tekintse meg a feladatalapú aszinkron programozást.

Az Task<TResult> osztály olyan konstruktorokat is biztosít, amelyek inicializálják a feladatot, de nem ütemezik végrehajtásra. Teljesítmény szempontjából a számítási feladatok létrehozásának és Task.Run ütemezésének elsődleges mechanizmusa a Task.Factory.StartNew metódusok és a metódusok, de olyan forgatókönyvek esetében, ahol a tevékenység létrehozását és ütemezését külön kell választani, a konstruktorok használhatók, és a tevékenység metódusával Start később ütemezhető a feladat végrehajtása.

A .NET Framework 4.6-ot célzó asztali alkalmazásokkal kezdve a feladatokat létrehozó és meghívó szál kultúrája a szál környezetének részévé válik. Vagyis a tevékenység végrehajtásához használt szál jelenlegi kultúrájától függetlenül a tevékenység jelenlegi kultúrája a hívószál kultúrája. Azon alkalmazások esetében, amelyek a .NET-keretrendszer 4.6 előtti verzióit célozzák meg, a feladat kultúrája annak a szálnak a kultúrája, amelyen a feladat végrehajtja. További információt a témakör "Kultúra és feladatalapú aszinkron műveletek" című szakaszában CultureInfo talál. Vegye figyelembe, hogy a Store-alkalmazások a Windows-futtatókörnyezet követik az alapértelmezett kultúra beállításában és lekérésében.

Azokat a műveleteket, amelyek nem adnak vissza értéket, az osztályt Task használja. A C# 7.0-tól kezdődően egy egyszerűbb feladathoz, amely nem referenciatípus, hanem értéktípus, használja a struktúrát System.Threading.Tasks.ValueTask<TResult> .

Konstruktorok

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

Inicializál egy újat Task<TResult> a megadott művelettel, állapottal és beállításokkal.

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

Inicializál egy újat Task<TResult> a megadott művelettel, állapottal és beállításokkal.

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

Inicializál egy újat Task<TResult> a megadott művelettel, állapottal és beállításokkal.

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

Inicializál egy újat Task<TResult> a megadott függvénnyel és állapottal.

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

Inicializál egy újat Task<TResult> a megadott függvénnyel és létrehozási lehetőségekkel.

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

Inicializál egy újat Task<TResult> a megadott függvénnyel.

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

Inicializál egy újat Task<TResult> a megadott függvénnyel és létrehozási lehetőségekkel.

Task<TResult>(Func<TResult>)

Inicializál egy újat Task<TResult> a megadott függvénnyel.

Tulajdonságok

Name Description
AsyncState

Lekéri a létrehozáskor Task megadott állapotobjektumot, vagy null értéket, ha nincs megadva.

(Öröklődés forrása Task)
CreationOptions

Lekéri a TaskCreationOptions feladat létrehozásához használt elemet.

(Öröklődés forrása Task)
Exception

Lekéri azokat AggregateException , amelyek miatt a Task befejezés idő előtt véget ért. Ha a Task befejezett feladat sikeresen befejeződött, vagy még nem adott ki kivételeket, akkor ez a visszatérési érték nulllesz.

(Öröklődés forrása Task)
Factory

Lekéri a példányok létrehozására és konfigurálására Task<TResult> szolgáló gyári metódust.

Id

Lekéri a Task példány azonosítóját.

(Öröklődés forrása Task)
IsCanceled

Lekérdezi, hogy a Task példány befejeződött-e a végrehajtás megszakítása miatt.

(Öröklődés forrása Task)
IsCompleted

Olyan értéket kap, amely jelzi, hogy a tevékenység befejeződött-e.

(Öröklődés forrása Task)
IsCompletedSuccessfully

Lekérdezi, hogy a tevékenység befejeződött-e.

(Öröklődés forrása Task)
IsFaulted

Lekérdezi, hogy a Task befejezés nem kezelt kivétel miatt van-e befejezve.

(Öröklődés forrása Task)
Result

Ennek az eredményértéknek a lekérdezése Task<TResult>.

Status

Lekéri a TaskStatus feladatot.

(Öröklődés forrása Task)

Metódusok

Name Description
ConfigureAwait(Boolean)

A várakozáshoz Task<TResult>használt várakozót konfigurálja.

ConfigureAwait(ConfigureAwaitOptions)

A várakozáshoz Taskhasznált várakozót konfigurálja.

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

Létrehoz egy folytatást, amely megkapja a hívó által megadott állapotadatokat és egy lemondási jogkivonatot, és amely a cél Task befejeződésekor fut. A folytatás meghatározott feltételek alapján fut, és egy megadott ütemezőt használ.

(Öröklődés forrása Task)
ContinueWith(Action<Task,Object>, Object, CancellationToken)

Létrehoz egy folytatást, amely fogadja a hívó által megadott állapotinformációkat és egy lemondási jogkivonatot, és a cél befejeződésekor aszinkron módon hajtja végre.Task

(Öröklődés forrása Task)
ContinueWith(Action<Task,Object>, Object, TaskContinuationOptions)

Létrehoz egy folytatást, amely fogadja a hívó által megadott állapotinformációkat, és végrehajtja a cél Task befejeződésekor. A folytatás meghatározott feltételek alapján fut.

(Öröklődés forrása Task)
ContinueWith(Action<Task,Object>, Object, TaskScheduler)

Létrehoz egy folytatást, amely fogadja a hívó által megadott állapotinformációkat, és a cél befejeződésekor aszinkron módon hajtja végre.Task A folytatás egy megadott ütemezőt használ.

(Öröklődés forrása Task)
ContinueWith(Action<Task,Object>, Object)

Létrehoz egy folytatást, amely fogadja a hívó által megadott állapotinformációkat, és végrehajtja a cél Task befejeződésekor.

(Öröklődés forrása Task)
ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

Létrehoz egy folytatást, amely a cél Task<TResult> befejeződésekor fut.

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

Létrehoz egy folytatást, amely a cél Task<TResult> befejeződésekor fut.

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

Létrehoz egy folytatást, amely a cél Task<TResult> befejeződésekor fut.

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

Létrehoz egy folytatást, amely a cél Task<TResult> befejeződésekor fut.

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

Olyan folytatást hoz létre, amely átadta az állapotinformációkat, és a cél Task<TResult> befejeződésekor hajtja végre.

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

Létrehoz egy folytatást, amely a megadott continuationOptionsfeltételnek megfelelően fut.

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

Megszakítható folytatást hoz létre, amely a cél befejeződésekor aszinkron módon Task<TResult> fut.

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

Létrehoz egy folytatást, amely a megadott continuationOptionsfeltételnek megfelelően fut.

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

Létrehoz egy folytatást, amely a cél befejeződésekor aszinkron módon Task<TResult> fut.

ContinueWith(Action<Task<TResult>>)

Létrehoz egy folytatást, amely aszinkron módon hajtja végre a céltevékenység befejezésekor.

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

Létrehoz egy folytatást, amely akkor fut, amikor a céltevékenység a megadottnak TaskContinuationOptionsmegfelelően versenyez. A folytatás egy lemondási jogkivonatot kap, és egy megadott ütemezőt használ.

(Öröklődés forrása Task)
ContinueWith(Action<Task>, CancellationToken)

Létrehoz egy folytatást, amely megkapja a lemondási jogkivonatot, és a cél befejeződésekor aszinkron módon hajtja végre.Task

(Öröklődés forrása Task)
ContinueWith(Action<Task>, TaskContinuationOptions)

Létrehoz egy folytatást, amely akkor fut, amikor a céltevékenység a megadottnak TaskContinuationOptionsmegfelelően befejeződik.

(Öröklődés forrása Task)
ContinueWith(Action<Task>, TaskScheduler)

Létrehoz egy folytatást, amely a cél befejeződésekor aszinkron módon Task fut. A folytatás egy megadott ütemezőt használ.

(Öröklődés forrása Task)
ContinueWith(Action<Task>)

Létrehoz egy folytatást, amely a cél befejeződésekor aszinkron módon Task fut.

(Öröklődés forrása Task)
ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

Létrehoz egy folytatást, amely a cél Task<TResult> befejeződésekor fut.

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

Létrehoz egy folytatást, amely a cél Task<TResult> befejeződésekor fut.

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

Létrehoz egy folytatást, amely a cél Task<TResult> befejeződésekor fut.

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

Létrehoz egy folytatást, amely a cél Task<TResult> befejeződésekor fut.

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

Létrehoz egy folytatást, amely a cél Task<TResult> befejeződésekor fut.

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

Létrehoz egy folytatást, amely a megadott continuationOptionsfeltételnek megfelelően fut.

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

Létrehoz egy folytatást, amely a cél befejeződésekor aszinkron módon Task<TResult> fut.

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

Létrehoz egy folytatást, amely a megadott continuationOptionsfeltételnek megfelelően fut.

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

Létrehoz egy folytatást, amely a cél befejeződésekor aszinkron módon Task<TResult> fut.

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

Létrehoz egy folytatást, amely a cél befejeződésekor aszinkron módon Task<TResult> fut.

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

Létrehoz egy folytatást, amely a megadott tevékenység-folytatási beállítások alapján fut, amikor a cél Task befejeződik, és visszaad egy értéket. A folytatás megkapja a hívó által megadott állapotinformációkat és egy lemondási jogkivonatot, és a megadott ütemezőt használja.

(Öröklődés forrása Task)
ContinueWith<TResult>(Func<Task,Object,TResult>, Object, CancellationToken)

Létrehoz egy folytatást, amely aszinkron módon fut, amikor a cél Task befejeződik, és visszaad egy értéket. A folytatás megkapja a hívó által megadott állapotinformációkat és egy lemondási jogkivonatot.

(Öröklődés forrása Task)
ContinueWith<TResult>(Func<Task,Object,TResult>, Object, TaskContinuationOptions)

Létrehoz egy folytatást, amely a cél befejeződésekor a megadott tevékenység-folytatási Task beállítások alapján fut. A folytatás megkapja a hívó által megadott állapotinformációkat.

(Öröklődés forrása Task)
ContinueWith<TResult>(Func<Task,Object,TResult>, Object, TaskScheduler)

Létrehoz egy folytatást, amely a cél befejeződésekor aszinkron módon Task fut. A folytatás fogadja a hívó által megadott állapotinformációkat, és egy megadott ütemezőt használ.

(Öröklődés forrása Task)
ContinueWith<TResult>(Func<Task,Object,TResult>, Object)

Létrehoz egy folytatást, amely fogadja a hívó által megadott állapotinformációkat, és aszinkron módon hajtja végre a célt Task , és visszaad egy értéket.

(Öröklődés forrása Task)
ContinueWith<TResult>(Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Létrehoz egy folytatást, amely a megadott folytatási beállításoknak megfelelően fut, és egy értéket ad vissza. A folytatás egy lemondási jogkivonatot ad át, és egy megadott ütemezőt használ.

(Öröklődés forrása Task)
ContinueWith<TResult>(Func<Task,TResult>, CancellationToken)

Létrehoz egy folytatást, amely aszinkron módon fut, amikor a cél Task befejeződik, és visszaad egy értéket. A folytatás egy lemondási jogkivonatot kap.

(Öröklődés forrása Task)
ContinueWith<TResult>(Func<Task,TResult>, TaskContinuationOptions)

Létrehoz egy folytatást, amely a megadott folytatási beállításoknak megfelelően fut, és egy értéket ad vissza.

(Öröklődés forrása Task)
ContinueWith<TResult>(Func<Task,TResult>, TaskScheduler)

Létrehoz egy folytatást, amely aszinkron módon fut, amikor a cél Task befejeződik, és visszaad egy értéket. A folytatás egy megadott ütemezőt használ.

(Öröklődés forrása Task)
ContinueWith<TResult>(Func<Task,TResult>)

Létrehoz egy folytatást, amely aszinkron módon fut, amikor a cél Task<TResult> befejeződik, és visszaad egy értéket.

(Öröklődés forrása Task)
Dispose()

Az osztály aktuális példánya által használt összes erőforrást felszabadítja Task .

(Öröklődés forrása Task)
Dispose(Boolean)

TaskAz összes nem felügyelt erőforrást felszabadítja.

(Öröklődés forrása Task)
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetAwaiter()

Lekéri a váró, hogy várjon erre Task<TResult>.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
RunSynchronously()

Szinkron módon fut az Task aktuálison TaskScheduler.

(Öröklődés forrása Task)
RunSynchronously(TaskScheduler)

Task A megadotton szinkron módon futtatja a parancsotTaskScheduler.

(Öröklődés forrása Task)
Start()

Elindítja a Taskelemet, és a végrehajtás ütemezését az aktuálisra TaskSchedulerütemezi.

(Öröklődés forrása Task)
Start(TaskScheduler)

Elindítja a Taskparancsot, és a megadott TaskScheduleridőpontra ütemezi a végrehajtáshoz.

(Öröklődés forrása Task)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
Wait()

Megvárja, amíg befejeződik a Task végrehajtás.

(Öröklődés forrása Task)
Wait(CancellationToken)

Megvárja, amíg befejeződik a Task végrehajtás. A várakozás akkor fejeződik be, ha a tevékenység befejezése előtt egy lemondási jogkivonatot törölnek.

(Öröklődés forrása Task)
Wait(Int32, CancellationToken)

Megvárja, amíg befejeződik a Task végrehajtás. A várakozás akkor fejeződik be, ha egy időtúllépési időköz el nem telik, vagy egy lemondási jogkivonat a feladat befejezése előtt megszakad.

(Öröklődés forrása Task)
Wait(Int32)

Megvárja, amíg a Task végrehajtás befejeződik egy megadott számú ezredmásodpercen belül.

(Öröklődés forrása Task)
Wait(TimeSpan, CancellationToken)

Megvárja, amíg befejeződik a Task végrehajtás.

(Öröklődés forrása Task)
Wait(TimeSpan)

Megvárja, amíg a Task végrehajtás befejeződik egy megadott időintervallumon belül.

(Öröklődés forrása Task)
WaitAsync(CancellationToken)

Task<TResult> Ez akkor fejeződik be, amikor ez Task<TResult> befejeződik, vagy ha a megadott CancellationToken lemondást kérte.

WaitAsync(TimeSpan, CancellationToken)

Task<TResult> Lekéri a befejezett állapotot, amikor a Task<TResult> megadott időtúllépés lejár, vagy amikor a megadott CancellationToken lemondást kérte.

WaitAsync(TimeSpan, TimeProvider, CancellationToken)

Task<TResult> Lekéri a befejezett állapotot, amikor a Task<TResult> megadott időtúllépés lejár, vagy amikor a megadott CancellationToken lemondást kérte.

WaitAsync(TimeSpan, TimeProvider)

Task<TResult> Lekéri a befejezett Task<TResult> időtúllépést vagy a megadott időtúllépési időtúllépést.

WaitAsync(TimeSpan)

Task<TResult> Lekéri a befejezett Task<TResult> időtúllépést vagy a megadott időtúllépési időtúllépést.

Explicit interfész-implementációk

Name Description
IAsyncResult.AsyncWaitHandle

Lekéri azt a parancsot WaitHandle , amellyel megvárhatja a feladat befejezését.

(Öröklődés forrása Task)
IAsyncResult.CompletedSynchronously

Jelzi, hogy a művelet szinkronban fejeződött-e be.

(Öröklődés forrása Task)

Bővítő metódusok

Name Description
AsAsyncAction(Task)

Egy megkezdett tevékenységet jelképező Windows-futtatókörnyezet aszinkron műveletet ad vissza.

AsAsyncOperation<TResult>(Task<TResult>)

Egy Windows-futtatókörnyezet aszinkron műveletet ad vissza, amely egy elindított feladatot jelöl, amely eredményt ad vissza.

DispatcherOperationWait(Task, TimeSpan)

Megvárja, amíg a mögöttes DispatcherOperation eszköz befejeződik.

DispatcherOperationWait(Task)

Határozatlan ideig várakozik, amíg az alapul szolgáló DispatcherOperation befejeződik.

IsDispatcherOperationTask(Task)

Olyan értéket ad vissza, amely jelzi, hogy ez Task társítva van-e egy DispatcherOperation.

A következőre érvényes:

Szálbiztonság

Task<TResult>A tagok – kivéve – Dispose()szálbiztosak, és egyidejűleg több szálból is használhatók.

Lásd még