Task<TResult> Constructores

Definición

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

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

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

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

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

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

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

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

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.

Consulte también

Se aplica a