Task<TResult> Constructores
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Inicializa un nuevo Task<TResult> objeto.
Sobrecargas
| Nombre | Description |
|---|---|
| Task<TResult>(Func<TResult>) |
Inicializa un nuevo Task<TResult> con la función especificada. |
| Task<TResult>(Func<Object,TResult>, Object) |
Inicializa un nuevo Task<TResult> con la función y el estado especificados. |
| Task<TResult>(Func<TResult>, CancellationToken) |
Inicializa un nuevo Task<TResult> con la función especificada. |
| Task<TResult>(Func<TResult>, TaskCreationOptions) |
Inicializa un nuevo Task<TResult> con las opciones de creación y función especificadas. |
| Task<TResult>(Func<Object,TResult>, Object, CancellationToken) |
Inicializa un nuevo Task<TResult> con la acción, el estado y las opciones especificados. |
| Task<TResult>(Func<Object,TResult>, Object, TaskCreationOptions) |
Inicializa un nuevo Task<TResult> con la acción, el estado y las opciones especificados. |
| Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions) |
Inicializa un nuevo Task<TResult> con las opciones de creación y función especificadas. |
| Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions) |
Inicializa un nuevo Task<TResult> con la acción, el estado y las opciones especificados. |
Task<TResult>(Func<TResult>)
Inicializa un nuevo Task<TResult> con la función especificada.
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))
Parámetros
- function
- Func<TResult>
Delegado que representa el código que se va a ejecutar en la tarea. Cuando se haya completado la función, la propiedad de Result la tarea se establecerá para devolver el valor de resultado de la función.
Excepciones
El function argumento es null.
El function argumento es null.
Ejemplos
En el ejemplo siguiente se cuenta el número aproximado de palabras en archivos de texto que representan libros publicados. Cada tarea es responsable de abrir un archivo, leer todo su contenido de forma asincrónica y calcular el recuento de palabras mediante una expresión regular. Se Task.WaitAll(Task[]) llama al método para asegurarse de que todas las tareas se hayan completado antes de mostrar el recuento de palabras de cada libro en la consola.
La creación de instancias de objeto está separada de la ejecución de objetos en este ejemplo para que el ejemplo pueda asegurarse de que existe cada archivo. Si no lo hacen, muestra el nombre del archivo que falta. De lo contrario, llama al Task.Start método para iniciar cada tarea.
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
El patrón \p{P}*\s+ de expresión regular coincide con cero, uno o más caracteres de puntuación seguidos de uno o varios caracteres de espacio en blanco. Se supone que el número total de coincidencias es igual al recuento aproximado de palabras.
Comentarios
Este constructor solo debe usarse en escenarios avanzados en los que es necesario que se separa la creación y el inicio de la tarea.
En lugar de llamar a este constructor, la forma más común de crear instancias de un Task<TResult> objeto e iniciar una tarea es llamando a los métodos y TaskFactory<TResult>.StartNew(Func<TResult>) estáticosTask.Run<TResult>(Func<TResult>).
Si una tarea sin acción es necesaria solo para que el consumidor de una API tenga algo que esperar, se debe usar .TaskCompletionSource<TResult>
Consulte también
Se aplica a
Task<TResult>(Func<Object,TResult>, Object)
Inicializa un nuevo Task<TResult> con la función y el estado especificados.
public:
Task(Func<System::Object ^, TResult> ^ function, System::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)
Parámetros
Delegado que representa el código que se va a ejecutar en la tarea. Cuando se haya completado la función, la propiedad de Result la tarea se establecerá para devolver el valor de resultado de la función.
- state
- Object
Objeto que representa los datos que va a usar la acción.
Excepciones
El function argumento es null.
El function argumento es null.
Comentarios
En lugar de llamar a este constructor, la forma más común de crear instancias de un Task<TResult> objeto e iniciar una tarea es llamando al método estático TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object) . La única ventaja que ofrece este constructor es que permite separar la creación de instancias de objeto de la invocación de tareas.
Consulte también
Se aplica a
Task<TResult>(Func<TResult>, CancellationToken)
Inicializa un nuevo Task<TResult> con la función especificada.
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)
Parámetros
- function
- Func<TResult>
Delegado que representa el código que se va a ejecutar en la tarea. Cuando se haya completado la función, la propiedad de Result la tarea se establecerá para devolver el valor de resultado de la función.
- cancellationToken
- CancellationToken
que CancellationToken se va a asignar a esta tarea.
Excepciones
El CancellationTokenSource objeto que creó cancellationToken ya se ha eliminado.
El function argumento es null.
El function argumento es null.
Comentarios
En lugar de llamar a este constructor, la forma más común de crear instancias de un Task<TResult> objeto e iniciar una tarea es llamando a los métodos y TaskFactory<TResult>.StartNew(Func<TResult>, CancellationToken) estáticosTask.Run<TResult>(Func<TResult>, CancellationToken). La única ventaja que ofrece este constructor es que permite separar la creación de instancias de objeto de la invocación de tareas.
Consulte también
Se aplica a
Task<TResult>(Func<TResult>, TaskCreationOptions)
Inicializa un nuevo Task<TResult> con las opciones de creación y función especificadas.
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)
Parámetros
- function
- Func<TResult>
Delegado que representa el código que se va a ejecutar en la tarea. Cuando se haya completado la función, la propiedad de Result la tarea se establecerá para devolver el valor de resultado de la función.
- creationOptions
- TaskCreationOptions
TaskCreationOptions que se usa para personalizar el comportamiento de la tarea.
Excepciones
El creationOptions argumento especifica un valor no válido para TaskCreationOptions.
El function argumento es null.
El function argumento es null.
Comentarios
En lugar de llamar a este constructor, la forma más común de crear instancias de un Task<TResult> objeto e iniciar una tarea es llamando al método estático TaskFactory<TResult>.StartNew(Func<TResult>, TaskCreationOptions) . La única ventaja que ofrece este constructor es que permite separar la creación de instancias de objeto de la invocación de tareas.
Consulte también
Se aplica a
Task<TResult>(Func<Object,TResult>, Object, CancellationToken)
Inicializa un nuevo Task<TResult> con la acción, el estado y las opciones especificados.
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);
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)
Parámetros
Delegado que representa el código que se va a ejecutar en la tarea. Cuando se haya completado la función, la propiedad de Result la tarea se establecerá para devolver el valor de resultado de la función.
- state
- Object
Objeto que representa los datos que va a usar la función .
- cancellationToken
- CancellationToken
que CancellationToken se va a asignar a la nueva tarea.
Excepciones
El CancellationTokenSource objeto que creó cancellationToken ya se ha eliminado.
El function argumento es null.
El function argumento es null.
Comentarios
En lugar de llamar a este constructor, la forma más común de crear instancias de un Task<TResult> objeto e iniciar una tarea es llamando al método estático TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken) . La única ventaja que ofrece este constructor es que permite separar la creación de instancias de objeto de la invocación de tareas.
Consulte también
Se aplica a
Task<TResult>(Func<Object,TResult>, Object, TaskCreationOptions)
Inicializa un nuevo Task<TResult> con la acción, el estado y las opciones especificados.
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);
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)
Parámetros
Delegado que representa el código que se va a ejecutar en la tarea. Cuando se haya completado la función, la propiedad de Result la tarea se establecerá para devolver el valor de resultado de la función.
- state
- Object
Objeto que representa los datos que va a usar la función .
- creationOptions
- TaskCreationOptions
TaskCreationOptions que se usa para personalizar el comportamiento de la tarea.
Excepciones
El creationOptions argumento especifica un valor no válido para TaskCreationOptions.
El function argumento es null.
El function argumento es null.
Comentarios
En lugar de llamar a este constructor, la forma más común de crear instancias de un Task<TResult> objeto e iniciar una tarea es llamando al método estático TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, TaskCreationOptions) . La única ventaja que ofrece este constructor es que permite separar la creación de instancias de objeto de la invocación de tareas.
Consulte también
Se aplica a
Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)
Inicializa un nuevo Task<TResult> con las opciones de creación y función especificadas.
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)
Parámetros
- function
- Func<TResult>
Delegado que representa el código que se va a ejecutar en la tarea. Cuando se haya completado la función, la propiedad de Result la tarea se establecerá para devolver el valor de resultado de la función.
- cancellationToken
- CancellationToken
que CancellationToken se asignará a la nueva tarea.
- creationOptions
- TaskCreationOptions
TaskCreationOptions que se usa para personalizar el comportamiento de la tarea.
Excepciones
El CancellationTokenSource objeto que creó cancellationToken ya se ha eliminado.
El creationOptions argumento especifica un valor no válido para TaskCreationOptions.
El function argumento es null.
El function argumento es null.
Comentarios
En lugar de llamar a este constructor, la forma más común de crear instancias de un Task<TResult> objeto e iniciar una tarea es llamando al método estático TaskFactory.StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) . La única ventaja que ofrece este constructor es que permite separar la creación de instancias de objeto de la invocación de tareas.
Consulte también
Se aplica a
Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)
Inicializa un nuevo Task<TResult> con la acción, el estado y las opciones especificados.
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);
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)
Parámetros
Delegado que representa el código que se va a ejecutar en la tarea. Cuando se haya completado la función, la propiedad de Result la tarea se establecerá para devolver el valor de resultado de la función.
- state
- Object
Objeto que representa los datos que va a usar la función .
- cancellationToken
- CancellationToken
que CancellationToken se va a asignar a la nueva tarea.
- creationOptions
- TaskCreationOptions
TaskCreationOptions que se usa para personalizar el comportamiento de la tarea.
Excepciones
El CancellationTokenSource objeto que creó cancellationToken ya se ha eliminado.
El creationOptions argumento especifica un valor no válido para TaskCreationOptions.
El function argumento es null.
El function argumento es null.
Comentarios
En lugar de llamar a este constructor, la forma más común de crear instancias de un Task<TResult> objeto e iniciar una tarea es llamando al método estático TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) . La única ventaja que ofrece este constructor es que permite separar la creación de instancias de objeto de la invocación de tareas.