Task<TResult> Constructores

Definición

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.

C#
public Task (Func<TResult> function);

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.

C#
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

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

Se aplica a

.NET 7 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Inicializa una nueva Task<TResult> con la función y estado especificados.

C#
public Task (Func<object,TResult> function, object state);
C#
public Task (Func<object?,TResult> function, object? state);

Parámetros

function
Func<Object,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.

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

Se aplica a

.NET 7 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Inicializa una nueva Task<TResult> con la función especificada.

C#
public Task (Func<TResult> function, System.Threading.CancellationToken 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

Se aplica a

.NET 7 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Inicializa una nueva Task<TResult> con la función y opciones de creación especificadas.

C#
public Task (Func<TResult> function, System.Threading.Tasks.TaskCreationOptions creationOptions);

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

Se aplica a

.NET 7 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Inicializa un nuevo objeto Task<TResult> con la acción, el estado y las opciones especificados.

C#
public Task (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken);
C#
public Task (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken);

Parámetros

function
Func<Object,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.

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

Se aplica a

.NET 7 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Inicializa un nuevo objeto Task<TResult> con la acción, el estado y las opciones especificados.

C#
public Task (Func<object,TResult> function, object state, System.Threading.Tasks.TaskCreationOptions creationOptions);
C#
public Task (Func<object?,TResult> function, object? state, System.Threading.Tasks.TaskCreationOptions creationOptions);

Parámetros

function
Func<Object,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.

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

Se aplica a

.NET 7 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Inicializa una nueva Task<TResult> con la función y opciones de creación especificadas.

C#
public Task (Func<TResult> function, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);

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

Se aplica a

.NET 7 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Inicializa un nuevo objeto Task<TResult> con la acción, el estado y las opciones especificados.

C#
public Task (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
C#
public Task (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);

Parámetros

function
Func<Object,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.

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

Se aplica a

.NET 7 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0