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 objeto Task<TResult>.
Sobrecargas
Task<TResult>(Func<TResult>) |
Inicializa una nueva Task<TResult> con la función especificada. |
Task<TResult>(Func<Object,TResult>, Object) |
Inicializa una nueva Task<TResult> con la función y estado especificados. |
Task<TResult>(Func<TResult>, CancellationToken) |
Inicializa una nueva Task<TResult> con la función especificada. |
Task<TResult>(Func<TResult>, TaskCreationOptions) |
Inicializa una nueva Task<TResult> con la función y opciones de creación especificadas. |
Task<TResult>(Func<Object,TResult>, Object, CancellationToken) |
Inicializa un nuevo objeto Task<TResult> con la acción, el estado y las opciones especificados. |
Task<TResult>(Func<Object,TResult>, Object, TaskCreationOptions) |
Inicializa un nuevo objeto Task<TResult> con la acción, el estado y las opciones especificados. |
Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions) |
Inicializa una nueva Task<TResult> con la función y opciones de creación especificadas. |
Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions) |
Inicializa un nuevo objeto Task<TResult> con la acción, el estado y las opciones especificados. |
Task<TResult>(Func<TResult>)
Inicializa una nueva 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 complete la función, se establecerá la propiedad Result de la tarea para que se devuelva el valor de resultado de la función.
Excepciones
El argumento function
es null
.
El argumento function
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 han 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 cada archivo existe. 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 se debe usar en escenarios avanzados en los que es necesario separar 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 se necesita una tarea sin ninguna acción solo para que el consumidor de una API tenga algo que esperar, se debe usar .TaskCompletionSource<TResult>
Consulte también
- Biblioteca de procesamiento paralelo basado en tareas (TPL)
- Programación asincrónica basada en tareas
Se aplica a
Task<TResult>(Func<Object,TResult>, Object)
Inicializa una nueva Task<TResult> con la función y estado especificados.
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)
Parámetros
Delegado que representa el código que se va a ejecutar en la tarea. Cuando se complete la función, se establecerá la propiedad Result de la tarea para que se devuelva el valor de resultado de la función.
- state
- Object
Objeto que representa los datos que la acción va a usar.
Excepciones
El argumento function
es null
.
El argumento function
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 objetos de la invocación de tareas.
Consulte también
- Biblioteca de procesamiento paralelo basado en tareas (TPL)
- Programación asincrónica basada en tareas
Se aplica a
Task<TResult>(Func<TResult>, CancellationToken)
Inicializa una nueva 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 complete la función, se establecerá la propiedad Result de la tarea para que se devuelva el valor de resultado de la función.
- cancellationToken
- CancellationToken
El CancellationToken al que se va a asignar esta tarea.
Excepciones
El CancellationTokenSource que creó cancellationToken
ya se ha eliminado.
El argumento function
es null
.
El argumento function
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 objetos de la invocación de tareas.
Consulte también
- Biblioteca de procesamiento paralelo basado en tareas (TPL)
- Programación asincrónica basada en tareas
Se aplica a
Task<TResult>(Func<TResult>, TaskCreationOptions)
Inicializa una nueva Task<TResult> con la función y opciones de creació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 complete la función, se establecerá la propiedad Result de la tarea para que se devuelva el valor de resultado de la función.
- creationOptions
- TaskCreationOptions
El objeto TaskCreationOptions que se usa para personalizar el comportamiento de la tarea.
Excepciones
El argumento creationOptions
especifica un valor no válido para TaskCreationOptions.
El argumento function
es null
.
El argumento function
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 objetos de la invocación de tareas.
Consulte también
- Biblioteca de procesamiento paralelo basado en tareas (TPL)
- Programación asincrónica basada en tareas
Se aplica a
Task<TResult>(Func<Object,TResult>, Object, CancellationToken)
Inicializa un nuevo objeto 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);
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 complete la función, se establecerá la propiedad Result de la tarea para que se devuelva el valor de resultado de la función.
- state
- Object
Un objeto que representa los datos que la función va a usar.
- cancellationToken
- CancellationToken
El CancellationToken que se va a asignar a la nueva tarea.
Excepciones
El CancellationTokenSource que creó cancellationToken
ya se ha eliminado.
El argumento function
es null
.
El argumento function
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 objetos de la invocación de tareas.
Consulte también
- Biblioteca de procesamiento paralelo basado en tareas (TPL)
- Programación asincrónica basada en tareas
Se aplica a
Task<TResult>(Func<Object,TResult>, Object, TaskCreationOptions)
Inicializa un nuevo objeto 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);
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 complete la función, se establecerá la propiedad Result de la tarea para que se devuelva el valor de resultado de la función.
- state
- Object
Un objeto que representa los datos que la función va a usar.
- creationOptions
- TaskCreationOptions
El objeto TaskCreationOptions que se usa para personalizar el comportamiento de la tarea.
Excepciones
El argumento creationOptions
especifica un valor no válido para TaskCreationOptions.
El argumento function
es null
.
El argumento function
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 objetos de la invocación de tareas.
Consulte también
- Biblioteca de procesamiento paralelo basado en tareas (TPL)
- Programación asincrónica basada en tareas
Se aplica a
Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)
Inicializa una nueva Task<TResult> con la función y opciones de creació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 complete la función, se establecerá la propiedad Result de la tarea para que se devuelva el valor de resultado de la función.
- cancellationToken
- CancellationToken
CancellationToken que se asignará a la nueva tarea.
- creationOptions
- TaskCreationOptions
El objeto TaskCreationOptions que se usa para personalizar el comportamiento de la tarea.
Excepciones
El CancellationTokenSource que creó cancellationToken
ya se ha eliminado.
El argumento creationOptions
especifica un valor no válido para TaskCreationOptions.
El argumento function
es null
.
El argumento function
es null
.
Comentarios
En lugar de llamar a este constructor, la forma más común de crear una instancia 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 objetos de la invocación de tareas.
Consulte también
- Biblioteca de procesamiento paralelo basado en tareas (TPL)
- Programación asincrónica basada en tareas
Se aplica a
Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)
Inicializa un nuevo objeto 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);
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 complete la función, se establecerá la propiedad Result de la tarea para que se devuelva el valor de resultado de la función.
- state
- Object
Un objeto que representa los datos que la función va a usar.
- cancellationToken
- CancellationToken
El CancellationToken que se va a asignar a la nueva tarea.
- creationOptions
- TaskCreationOptions
El objeto TaskCreationOptions que se usa para personalizar el comportamiento de la tarea.
Excepciones
El CancellationTokenSource que creó cancellationToken
ya se ha eliminado.
El argumento creationOptions
especifica un valor no válido para TaskCreationOptions.
El argumento function
es null
.
El argumento function
es null
.
Comentarios
En lugar de llamar a este constructor, la forma más común de crear una instancia 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 objetos de la invocación de tareas.
Consulte también
- Biblioteca de procesamiento paralelo basado en tareas (TPL)
- Programación asincrónica basada en tareas