Task<TResult> Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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
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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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.