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.

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

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

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

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

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

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

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

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

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

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

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

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