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
- Исходный код:
- 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
- Исходный код:
- 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)
Параметры
Делегат, который представляет код, выполняемый в рамках задачи. После завершения выполнения функции будет установлено свойство Result результата задачи для возврата результата выполнения функции.
- state
- Object
Объект, который представляет данные, используемые действием.
Исключения
Аргумент function
имеет значение null
.
Аргумент function
имеет значение null
.
Комментарии
Вместо вызова этого конструктора наиболее распространенным способом создания экземпляра Task<TResult> объекта и запуска задачи является вызов статического TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object) метода. Единственное преимущество этого конструктора заключается в том, что он позволяет отделять экземпляр объекта от вызова задачи.
См. также раздел
Применяется к
Task<TResult>(Func<TResult>, CancellationToken)
- Исходный код:
- 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
- Исходный код:
- 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
- Исходный код:
- 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)
Параметры
Делегат, который представляет код, выполняемый в рамках задачи. После завершения выполнения функции будет установлено свойство 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
- Исходный код:
- 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)
Параметры
Делегат, который представляет код, выполняемый в рамках задачи. После завершения выполнения функции будет установлено свойство 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
- Исходный код:
- 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
- Исходный код:
- 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)
Параметры
Делегат, который представляет код, выполняемый в рамках задачи. После завершения выполнения функции будет установлено свойство 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) метода. Единственным преимуществом этого конструктора является то, что он позволяет отделять экземпляр объекта от вызова задачи.