Sdílet prostřednictvím


Task<TResult> Konstruktory

Definice

Inicializuje nový Task<TResult> objekt.

Přetížení

Task<TResult>(Func<TResult>)

Inicializuje novou Task<TResult> pomocí zadané funkce.

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

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

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

Inicializuje novou Task<TResult> pomocí zadané funkce.

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

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

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

Inicializuje novou Task<TResult> se zadanou akcí, stavem a možnostmi.

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

Inicializuje novou Task<TResult> se zadanou akcí, stavem a možnostmi.

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

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

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

Inicializuje novou Task<TResult> se zadanou akcí, stavem a možnostmi.

Task<TResult>(Func<TResult>)

Inicializuje novou Task<TResult> pomocí zadané funkce.

public:
 Task(Func<TResult> ^ function);
public Task (Func<TResult> function);
new System.Threading.Tasks.Task<'Result> : Func<'Result> -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult))

Parametry

function
Func<TResult>

Delegát, který představuje kód, který se má provést v úloze. Po dokončení funkce bude vlastnost úkolu Result nastavena tak, aby vrátila výslednou hodnotu funkce.

Výjimky

Argument function je null.

Argument function je null.

Příklady

Následující příklad počítá přibližný počet slov v textových souborech, které představují publikované knihy. Každý úkol zodpovídá za otevření souboru, asynchronní čtení celého obsahu a výpočet počtu slov pomocí regulárního výrazu. Metoda Task.WaitAll(Task[]) se volá, aby se zajistilo, že všechny úkoly byly dokončeny před zobrazením počtu slov každé knihy do konzoly.

Instance objektu je v tomto příkladu oddělená od spuštění objektu, aby se zajistilo, že každý soubor existuje. Pokud ne, zobrazí se název chybějícího souboru. Jinak volá metodu Task.Start ke spuštění jednotlivých úloh.

using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

public class Example
{
   public static async Task Main()
   {
      string pattern = @"\p{P}*\s+";
      string[] titles = { "Sister Carrie", "The Financier" };
      Task<int>[] tasks = new Task<int>[titles.Length];

      for (int ctr = 0; ctr < titles.Length; ctr++) {
         string s = titles[ctr];
         tasks[ctr] = new Task<int>( () => {
                                   // Number of words.
                                   int nWords = 0;
                                   // Create filename from title.
                                   string fn = s + ".txt";

                                   StreamReader sr = new StreamReader(fn);
                                   string input = sr.ReadToEndAsync().Result;
                                   sr.Close();
                                   nWords = Regex.Matches(input, pattern).Count;
                                   return nWords;
                                } );
      }
      // Ensure files exist before launching tasks.
      bool allExist = true;
      foreach (var title in titles) {
         string fn = title + ".txt";
         if (! File.Exists(fn)) {
            allExist = false;
            Console.WriteLine("Cannot find '{0}'", fn);
            break;
         }   
      }
      // Launch tasks 
      if (allExist) {
         foreach (var t in tasks)
            t.Start();
      
        await Task.WhenAll(tasks);
  
        Console.WriteLine("Word Counts:\n");
        for (int ctr = 0; ctr < titles.Length; ctr++)
           Console.WriteLine("{0}: {1,10:N0} words", titles[ctr], tasks[ctr].Result);
      }   
   }
}
// The example displays the following output:
//       Sister Carrie:    159,374 words
//       The Financier:    196,362 words
Imports System.IO
Imports System.Text.RegularExpressions
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim pattern As String = "\p{P}*\s+"
      Dim titles() As String = { "Sister Carrie",
                                 "The Financier" }
      Dim tasks(titles.Length - 1) As Task(Of Integer)

      For ctr As Integer = 0 To titles.Length - 1
         Dim s As String = titles(ctr)
         tasks(ctr) = New Task(Of Integer)( Function()
                                   ' Number of words.
                                   Dim nWords As Integer = 0
                                   ' Create filename from title.
                                   Dim fn As String = s + ".txt"

                                   Dim sr As New StreamReader(fn)
                                   Dim input As String = sr.ReadToEndAsync().Result
                                   sr.Close()
                                   nWords = Regex.Matches(input, pattern).Count
                                   Return nWords
                                End Function)
      Next

      ' Ensure files exist before launching tasks.
      Dim allExist As Boolean = True
      For Each title In titles
         Dim fn As String = title + ".txt"
         If Not File.Exists(fn) Then
            allExist = false
            Console.WriteLine("Cannot find '{0}'", fn)
            Exit For
         End If   
      Next
      ' Launch tasks 
      If allExist Then
         For Each t in tasks
            t.Start()
         Next
         Task.WaitAll(tasks)

         Console.WriteLine("Word Counts:")
         Console.WriteLine()
         For ctr As Integer = 0 To titles.Length - 1
         Console.WriteLine("{0}: {1,10:N0} words", titles(ctr), tasks(ctr).Result)
         Next
      End If   
   End Sub
End Module
' The example displays the following output:
'       Sister Carrie:    159,374 words
'       The Financier:    196,362 words

Vzor regulárního výrazu \p{P}*\s+ odpovídá nule, jednomu nebo více interpunkčním znakům následovaným jedním nebo více prázdnými znaky. Předpokládá se, že celkový počet shod se rovná přibližný počet slov.

Poznámky

Tento konstruktor by se měl používat pouze v pokročilých scénářích, kde je nutné oddělit vytvoření a spuštění úkolu.

Místo volání tohoto konstruktoru je nejběžnější způsob vytvoření instance Task<TResult> objektu a spuštění úkolu voláním statických Task.Run<TResult>(Func<TResult>) a TaskFactory<TResult>.StartNew(Func<TResult>) metod.

Pokud úkol bez akce není nutný jenom pro příjemce rozhraní API, který má něco čekat, TaskCompletionSource<TResult> měl by se použít.

Viz také

Platí pro

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

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

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state);
public Task (Func<object,TResult> function, object state);
public Task (Func<object?,TResult> function, object? state);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object)

Parametry

function
Func<Object,TResult>

Delegát, který představuje kód, který se má provést v úloze. Po dokončení funkce bude vlastnost úkolu Result nastavena tak, aby vrátila výslednou hodnotu funkce.

state
Object

Objekt představující data, která má akce používat.

Výjimky

Argument function je null.

Argument function je null.

Poznámky

Místo volání tohoto konstruktoru je nejběžnější způsob vytvoření instance Task<TResult> objektu a spuštění úlohy voláním statické TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object) metody. Jedinou výhodou tohoto konstruktoru je, že umožňuje instanci objektu oddělit od vyvolání úkolů.

Viz také

Platí pro

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

Inicializuje novou Task<TResult> pomocí zadané funkce.

public:
 Task(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken);
public Task (Func<TResult> function, System.Threading.CancellationToken cancellationToken);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), cancellationToken As CancellationToken)

Parametry

function
Func<TResult>

Delegát, který představuje kód, který se má provést v úloze. Po dokončení funkce bude vlastnost úkolu Result nastavena tak, aby vrátila výslednou hodnotu funkce.

cancellationToken
CancellationToken

Úkol, který CancellationToken má být přiřazen.

Výjimky

cancellationToken Vytvořený CancellationTokenSource soubor již byl odstraněn.

Argument function je null.

Argument function je null.

Poznámky

Místo volání tohoto konstruktoru je nejběžnější způsob vytvoření instance Task<TResult> objektu a spuštění úkolu voláním statických Task.Run<TResult>(Func<TResult>, CancellationToken) a TaskFactory<TResult>.StartNew(Func<TResult>, CancellationToken) metod. Jedinou výhodou tohoto konstruktoru je, že umožňuje instanci objektu oddělit od vyvolání úkolů.

Viz také

Platí pro

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

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

public:
 Task(Func<TResult> ^ function, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<TResult> function, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), creationOptions As TaskCreationOptions)

Parametry

function
Func<TResult>

Delegát, který představuje kód, který se má provést v úloze. Po dokončení funkce bude vlastnost úkolu Result nastavena tak, aby vrátila výslednou hodnotu funkce.

creationOptions
TaskCreationOptions

Slouží TaskCreationOptions k přizpůsobení chování úkolu.

Výjimky

Argument creationOptions určuje neplatnou hodnotu pro TaskCreationOptions.

Argument function je null.

Argument function je null.

Poznámky

Místo volání tohoto konstruktoru je nejběžnější způsob vytvoření instance Task<TResult> objektu a spuštění úlohy voláním statické TaskFactory<TResult>.StartNew(Func<TResult>, TaskCreationOptions) metody. Jedinou výhodou tohoto konstruktoru je, že umožňuje instanci objektu oddělit od vyvolání úkolů.

Viz také

Platí pro

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

Inicializuje novou Task<TResult> se zadanou akcí, stavem a možnostmi.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::CancellationToken cancellationToken);
public Task (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken);
public Task (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, cancellationToken As CancellationToken)

Parametry

function
Func<Object,TResult>

Delegát, který představuje kód, který se má provést v úloze. Po dokončení funkce bude vlastnost úkolu Result nastavena tak, aby vrátila výslednou hodnotu funkce.

state
Object

Objekt představující data, která má funkce používat.

cancellationToken
CancellationToken

Úkol, který CancellationToken má být přiřazen k novému úkolu.

Výjimky

cancellationToken Vytvořený CancellationTokenSource soubor již byl odstraněn.

Argument function je null.

Argument function je null.

Poznámky

Místo volání tohoto konstruktoru je nejběžnější způsob vytvoření instance Task<TResult> objektu a spuštění úlohy voláním statické TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken) metody. Jedinou výhodou tohoto konstruktoru je, že umožňuje instanci objektu oddělit od vyvolání úkolů.

Viz také

Platí pro

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

Inicializuje novou Task<TResult> se zadanou akcí, stavem a možnostmi.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<object,TResult> function, object state, System.Threading.Tasks.TaskCreationOptions creationOptions);
public Task (Func<object?,TResult> function, object? state, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, creationOptions As TaskCreationOptions)

Parametry

function
Func<Object,TResult>

Delegát, který představuje kód, který se má provést v úloze. Po dokončení funkce bude vlastnost úkolu Result nastavena tak, aby vrátila výslednou hodnotu funkce.

state
Object

Objekt představující data, která má funkce používat.

creationOptions
TaskCreationOptions

Slouží TaskCreationOptions k přizpůsobení chování úkolu.

Výjimky

Argument creationOptions určuje neplatnou hodnotu pro TaskCreationOptions.

Argument function je null.

Argument function je null.

Poznámky

Místo volání tohoto konstruktoru je nejběžnější způsob vytvoření instance Task<TResult> objektu a spuštění úlohy voláním statické TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, TaskCreationOptions) metody. Jedinou výhodou tohoto konstruktoru je, že umožňuje instanci objektu oddělit od vyvolání úkolů.

Viz také

Platí pro

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

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

public:
 Task(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<TResult> function, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), cancellationToken As CancellationToken, creationOptions As TaskCreationOptions)

Parametry

function
Func<TResult>

Delegát, který představuje kód, který se má provést v úloze. Po dokončení funkce bude vlastnost úkolu Result nastavena tak, aby vrátila výslednou hodnotu funkce.

cancellationToken
CancellationToken

Ta CancellationToken bude přiřazena novému úkolu.

creationOptions
TaskCreationOptions

Slouží TaskCreationOptions k přizpůsobení chování úkolu.

Výjimky

cancellationToken Vytvořený CancellationTokenSource soubor již byl odstraněn.

Argument creationOptions určuje neplatnou hodnotu pro TaskCreationOptions.

Argument function je null.

Argument function je null.

Poznámky

Místo volání tohoto konstruktoru je nejběžnější způsob vytvoření instance Task<TResult> objektu a spuštění úlohy voláním statické TaskFactory.StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) metody. Jedinou výhodou tohoto konstruktoru je, že umožňuje instanci objektu oddělit od vyvolání úkolů.

Viz také

Platí pro

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

Inicializuje novou Task<TResult> se zadanou akcí, stavem a možnostmi.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
public Task (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, cancellationToken As CancellationToken, creationOptions As TaskCreationOptions)

Parametry

function
Func<Object,TResult>

Delegát, který představuje kód, který se má provést v úloze. Po dokončení funkce bude vlastnost úkolu Result nastavena tak, aby vrátila výslednou hodnotu funkce.

state
Object

Objekt představující data, která má funkce používat.

cancellationToken
CancellationToken

Úkol, který CancellationToken má být přiřazen k novému úkolu.

creationOptions
TaskCreationOptions

Slouží TaskCreationOptions k přizpůsobení chování úkolu.

Výjimky

cancellationToken Vytvořený CancellationTokenSource soubor již byl odstraněn.

Argument creationOptions určuje neplatnou hodnotu pro TaskCreationOptions.

Argument function je null.

Argument function je null.

Poznámky

Místo volání tohoto konstruktoru je nejběžnější způsob vytvoření instance Task<TResult> objektu a spuštění úlohy voláním statické TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) metody. Jedinou výhodou tohoto konstruktoru je, že umožňuje instanci objektu oddělit od vyvolání úkolů.

Viz také

Platí pro