Task<TResult> Конструкторы

Определение

Инициализирует новый Task<TResult> объект.

Перегрузки

Имя Описание
Task<TResult>(Func<TResult>)

Инициализирует новый Task<TResult> с указанной функцией.

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

Инициализирует новый Task<TResult> с указанной функцией и состоянием.

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

Инициализирует новый Task<TResult> с указанной функцией.

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

Инициализирует новый Task<TResult> с указанными параметрами функции и создания.

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

Инициализирует новый Task<TResult> с указанным действием, состоянием и параметрами.

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

Инициализирует новый Task<TResult> с указанным действием, состоянием и параметрами.

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

Инициализирует новый Task<TResult> с указанными параметрами функции и создания.

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

Инициализирует новый Task<TResult> с указанным действием, состоянием и параметрами.

Task<TResult>(Func<TResult>)

Исходный код:
Future.cs
Исходный код:
Task_T.cs
Исходный код:
Future.cs
Исходный код:
Future.cs
Исходный код:
Future.cs

Инициализирует новый Task<TResult> с указанной функцией.

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))

Параметры

function
Func<TResult>

Делегат, представляющий код, выполняемый в задаче. После завершения функции свойство задачи Result будет задано для возврата результирующих значений функции.

Исключения

Аргумент function имеет значение null.

Аргумент function имеет значение null.

Примеры

В следующем примере подсчитывается приблизительное количество слов в текстовых файлах, представляющих опубликованные книги. Каждая задача отвечает за открытие файла, асинхронное чтение всего содержимого и вычисление количества слов с помощью регулярного выражения. Метод Task.WaitAll(Task[]) вызывается, чтобы убедиться, что все задачи выполнены перед отображением количества слов каждой книги в консоли.

Экземпляр объекта отделен от выполнения объекта в этом примере, чтобы в примере можно было убедиться, что каждый файл существует. В противном случае отображается имя отсутствующих файлов. В противном случае вызывается метод для запуска каждой Task.Start задачи.

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

Шаблон \p{P}*\s+ регулярного выражения соответствует нулю, одному или нескольким символам препинания, за которым следует один или несколько символов пробела. Предполагается, что общее число совпадений равно приблизительному числу слов.

Комментарии

Этот конструктор должен использоваться только в сложных сценариях, где требуется, чтобы создание и запуск задачи отделялись.

Вместо вызова этого конструктора наиболее распространенным способом создания экземпляра Task<TResult> объекта и запуска задачи является вызов статического Task.Run<TResult>(Func<TResult>) и TaskFactory<TResult>.StartNew(Func<TResult>) метода.

Если задача без действий не требуется только для потребителя API, чтобы иметь что-то ожидающее, TaskCompletionSource<TResult> следует использовать.

См. также раздел

Применяется к

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

Исходный код:
Future.cs
Исходный код:
Task_T.cs
Исходный код:
Future.cs
Исходный код:
Future.cs
Исходный код:
Future.cs

Инициализирует новый Task<TResult> с указанной функцией и состоянием.

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)

Параметры

function
Func<Object,TResult>

Делегат, представляющий код, выполняемый в задаче. После завершения функции свойство задачи Result будет задано для возврата результирующих значений функции.

state
Object

Объект, представляющий данные, используемые действием.

Исключения

Аргумент function имеет значение null.

Аргумент function имеет значение null.

Комментарии

Вместо вызова этого конструктора наиболее распространенный способ создания экземпляра Task<TResult> объекта и запуска задачи заключается в вызове статического TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object) метода. Единственным преимуществом, предлагаемым этим конструктором, является то, что он позволяет отделить экземпляр объекта от вызова задачи.

См. также раздел

Применяется к

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

Исходный код:
Future.cs
Исходный код:
Task_T.cs
Исходный код:
Future.cs
Исходный код:
Future.cs
Исходный код:
Future.cs

Инициализирует новый Task<TResult> с указанной функцией.

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)

Параметры

function
Func<TResult>

Делегат, представляющий код, выполняемый в задаче. После завершения функции свойство задачи Result будет задано для возврата результирующих значений функции.

cancellationToken
CancellationToken

Назначение CancellationToken этой задаче.

Исключения

Созданный CancellationTokenSource объект cancellationToken уже удален.

Аргумент function имеет значение null.

Аргумент function имеет значение null.

Комментарии

Вместо вызова этого конструктора наиболее распространенным способом создания экземпляра Task<TResult> объекта и запуска задачи является вызов статического Task.Run<TResult>(Func<TResult>, CancellationToken) и TaskFactory<TResult>.StartNew(Func<TResult>, CancellationToken) метода. Единственным преимуществом, предлагаемым этим конструктором, является то, что он позволяет отделить экземпляр объекта от вызова задачи.

См. также раздел

Применяется к

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

Исходный код:
Future.cs
Исходный код:
Task_T.cs
Исходный код:
Future.cs
Исходный код:
Future.cs
Исходный код:
Future.cs

Инициализирует новый Task<TResult> с указанными параметрами функции и создания.

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)

Параметры

function
Func<TResult>

Делегат, представляющий код, выполняемый в задаче. После завершения функции свойство задачи Result будет задано для возврата результирующих значений функции.

creationOptions
TaskCreationOptions

Используется TaskCreationOptions для настройки поведения задачи.

Исключения

Аргумент creationOptions задает недопустимое значение для TaskCreationOptions.

Аргумент function имеет значение null.

Аргумент function имеет значение null.

Комментарии

Вместо вызова этого конструктора наиболее распространенный способ создания экземпляра Task<TResult> объекта и запуска задачи заключается в вызове статического TaskFactory<TResult>.StartNew(Func<TResult>, TaskCreationOptions) метода. Единственным преимуществом, предлагаемым этим конструктором, является то, что он позволяет отделить экземпляр объекта от вызова задачи.

См. также раздел

Применяется к

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

Исходный код:
Future.cs
Исходный код:
Task_T.cs
Исходный код:
Future.cs
Исходный код:
Future.cs
Исходный код:
Future.cs

Инициализирует новый Task<TResult> с указанным действием, состоянием и параметрами.

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)

Параметры

function
Func<Object,TResult>

Делегат, представляющий код, выполняемый в задаче. После завершения функции свойство задачи Result будет задано для возврата результирующих значений функции.

state
Object

Объект, представляющий данные, используемые функцией.

cancellationToken
CancellationToken

Назначение CancellationToken новой задаче.

Исключения

Созданный CancellationTokenSource объект cancellationToken уже удален.

Аргумент function имеет значение null.

Аргумент function имеет значение null.

Комментарии

Вместо вызова этого конструктора наиболее распространенный способ создания экземпляра Task<TResult> объекта и запуска задачи заключается в вызове статического TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken) метода. Единственным преимуществом, предлагаемым этим конструктором, является то, что он позволяет отделить экземпляр объекта от вызова задачи.

См. также раздел

Применяется к

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

Исходный код:
Future.cs
Исходный код:
Task_T.cs
Исходный код:
Future.cs
Исходный код:
Future.cs
Исходный код:
Future.cs

Инициализирует новый Task<TResult> с указанным действием, состоянием и параметрами.

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)

Параметры

function
Func<Object,TResult>

Делегат, представляющий код, выполняемый в задаче. После завершения функции свойство задачи Result будет задано для возврата результирующих значений функции.

state
Object

Объект, представляющий данные, используемые функцией.

creationOptions
TaskCreationOptions

Используется TaskCreationOptions для настройки поведения задачи.

Исключения

Аргумент creationOptions задает недопустимое значение для TaskCreationOptions.

Аргумент function имеет значение null.

Аргумент function имеет значение null.

Комментарии

Вместо вызова этого конструктора наиболее распространенный способ создания экземпляра Task<TResult> объекта и запуска задачи заключается в вызове статического TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, TaskCreationOptions) метода. Единственным преимуществом, предлагаемым этим конструктором, является то, что он позволяет отделить экземпляр объекта от вызова задачи.

См. также раздел

Применяется к

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

Исходный код:
Future.cs
Исходный код:
Task_T.cs
Исходный код:
Future.cs
Исходный код:
Future.cs
Исходный код:
Future.cs

Инициализирует новый Task<TResult> с указанными параметрами функции и создания.

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)

Параметры

function
Func<TResult>

Делегат, представляющий код, выполняемый в задаче. После завершения функции свойство задачи Result будет задано для возврата результирующих значений функции.

cancellationToken
CancellationToken

Это CancellationToken будет назначено новой задаче.

creationOptions
TaskCreationOptions

Используется TaskCreationOptions для настройки поведения задачи.

Исключения

Созданный CancellationTokenSource объект cancellationToken уже удален.

Аргумент creationOptions задает недопустимое значение для TaskCreationOptions.

Аргумент function имеет значение null.

Аргумент function имеет значение null.

Комментарии

Вместо вызова этого конструктора наиболее распространенный способ создания экземпляра Task<TResult> объекта и запуска задачи заключается в вызове статического TaskFactory.StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) метода. Единственным преимуществом, предлагаемым этим конструктором, является то, что он позволяет отделить экземпляр объекта от вызова задачи.

См. также раздел

Применяется к

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

Исходный код:
Future.cs
Исходный код:
Task_T.cs
Исходный код:
Future.cs
Исходный код:
Future.cs
Исходный код:
Future.cs

Инициализирует новый Task<TResult> с указанным действием, состоянием и параметрами.

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)

Параметры

function
Func<Object,TResult>

Делегат, представляющий код, выполняемый в задаче. После завершения функции свойство задачи Result будет задано для возврата результирующих значений функции.

state
Object

Объект, представляющий данные, используемые функцией.

cancellationToken
CancellationToken

Назначение CancellationToken новой задаче.

creationOptions
TaskCreationOptions

Используется TaskCreationOptions для настройки поведения задачи.

Исключения

Созданный CancellationTokenSource объект cancellationToken уже удален.

Аргумент creationOptions задает недопустимое значение для TaskCreationOptions.

Аргумент function имеет значение null.

Аргумент function имеет значение null.

Комментарии

Вместо вызова этого конструктора наиболее распространенный способ создания экземпляра Task<TResult> объекта и запуска задачи заключается в вызове статического TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) метода. Единственным преимуществом, предлагаемым этим конструктором, является то, что он позволяет отделить экземпляр объекта от вызова задачи.

См. также раздел

Применяется к