Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase TaskFactory<TResult>

 

Publicado: octubre de 2016

Proporciona compatibilidad para crear y programar objetos Task<TResult>.

Espacio de nombres:   System.Threading.Tasks
Ensamblado:  mscorlib (en mscorlib.dll)

System.Object
  System.Threading.Tasks.TaskFactory<TResult>

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public class TaskFactory<TResult>

Parámetros de tipo

TResult

Valor devuelto de los objetos Task<TResult> creados por los métodos de esta clase.

NombreDescripción
System_CAPS_pubmethodTaskFactory<TResult>()

Inicializa una instancia de TaskFactory<TResult> con la configuración predeterminada.

System_CAPS_pubmethodTaskFactory<TResult>(CancellationToken)

Inicializa una instancia de TaskFactory<TResult> con la configuración predeterminada.

System_CAPS_pubmethodTaskFactory<TResult>(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler)

Inicializa una instancia de TaskFactory<TResult> con la configuración especificada.

System_CAPS_pubmethodTaskFactory<TResult>(TaskCreationOptions, TaskContinuationOptions)

Inicializa una instancia de TaskFactory<TResult> con la configuración especificada.

System_CAPS_pubmethodTaskFactory<TResult>(TaskScheduler)

Inicializa una instancia de TaskFactory<TResult> con la configuración especificada.

NombreDescripción
System_CAPS_pubpropertyCancellationToken

Obtiene el token de cancelación predeterminado para este generador de tareas.

System_CAPS_pubpropertyContinuationOptions

Obtiene el valor de enumeración TaskContinuationOptions para este generador de tareas.

System_CAPS_pubpropertyCreationOptions

Obtiene el valor de enumeración TaskCreationOptions para este generador de tareas.

System_CAPS_pubpropertyScheduler

Obtiene el programador de tareas para este generador de tareas.

NombreDescripción
System_CAPS_pubmethodContinueWhenAll(Task[], Func<Task[], TResult>)

Crea una tarea de continuación que se iniciará cuando se complete el conjunto de tareas proporcionado.

System_CAPS_pubmethodContinueWhenAll(Task[], Func<Task[], TResult>, CancellationToken)

Crea una tarea de continuación que se iniciará cuando se complete el conjunto de tareas proporcionado.

System_CAPS_pubmethodContinueWhenAll(Task[], Func<Task[], TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Crea una tarea de continuación que se iniciará cuando se complete el conjunto de tareas proporcionado.

System_CAPS_pubmethodContinueWhenAll(Task[], Func<Task[], TResult>, TaskContinuationOptions)

Crea una tarea de continuación que se iniciará cuando se complete el conjunto de tareas proporcionado.

System_CAPS_pubmethodContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[], TResult>)

Crea una tarea de continuación que se iniciará cuando se complete el conjunto de tareas proporcionado.

System_CAPS_pubmethodContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[], TResult>, CancellationToken)

Crea una tarea de continuación que se iniciará cuando se complete el conjunto de tareas proporcionado.

System_CAPS_pubmethodContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[], TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Crea una tarea de continuación que se iniciará cuando se complete el conjunto de tareas proporcionado.

System_CAPS_pubmethodContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[], TResult>, TaskContinuationOptions)

Crea una tarea de continuación que se iniciará cuando se complete el conjunto de tareas proporcionado.

System_CAPS_pubmethodContinueWhenAny(Task[], Func<Task, TResult>)

Crea una tarea de continuación que se iniciará cuando se complete cualquier tarea del conjunto proporcionado.

System_CAPS_pubmethodContinueWhenAny(Task[], Func<Task, TResult>, CancellationToken)

Crea una tarea de continuación que se iniciará cuando se complete cualquier tarea del conjunto proporcionado.

System_CAPS_pubmethodContinueWhenAny(Task[], Func<Task, TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Crea una tarea de continuación que se iniciará cuando se complete cualquier tarea del conjunto proporcionado.

System_CAPS_pubmethodContinueWhenAny(Task[], Func<Task, TResult>, TaskContinuationOptions)

Crea una tarea de continuación que se iniciará cuando se complete cualquier tarea del conjunto proporcionado.

System_CAPS_pubmethodContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>, TResult>)

Crea una tarea de continuación que se iniciará cuando se complete cualquier tarea del conjunto proporcionado.

System_CAPS_pubmethodContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>, TResult>, CancellationToken)

Crea una tarea de continuación que se iniciará cuando se complete cualquier tarea del conjunto proporcionado.

System_CAPS_pubmethodContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>, TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Crea una tarea de continuación que se iniciará cuando se complete cualquier tarea del conjunto proporcionado.

System_CAPS_pubmethodContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>, TResult>, TaskContinuationOptions)

Crea una tarea de continuación que se iniciará cuando se complete cualquier tarea del conjunto proporcionado.

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodFromAsync(Func<AsyncCallback, Object, IAsyncResult>, Func<IAsyncResult, TResult>, Object)

Crea una tarea que representa un par de métodos Begin y End que se ajustan al modelo de programación asincrónica.

System_CAPS_pubmethodFromAsync(Func<AsyncCallback, Object, IAsyncResult>, Func<IAsyncResult, TResult>, Object, TaskCreationOptions)

Crea una tarea que representa un par de métodos Begin y End que se ajustan al modelo de programación asincrónica.

System_CAPS_pubmethodFromAsync(IAsyncResult, Func<IAsyncResult, TResult>)

Crea una tarea que ejecuta una función del método End cuando se completa el IAsyncResult especificado.

System_CAPS_pubmethodFromAsync(IAsyncResult, Func<IAsyncResult, TResult>, TaskCreationOptions)

Crea una tarea que ejecuta una función del método End cuando se completa el IAsyncResult especificado.

System_CAPS_pubmethodFromAsync(IAsyncResult, Func<IAsyncResult, TResult>, TaskCreationOptions, TaskScheduler)

Crea una tarea que ejecuta una función del método End cuando se completa el IAsyncResult especificado.

System_CAPS_pubmethodFromAsync<TArg1>(Func<TArg1, AsyncCallback, Object, IAsyncResult>, Func<IAsyncResult, TResult>, TArg1, Object)

Crea una tarea que representa un par de métodos Begin y End que se ajustan al modelo de programación asincrónica.

System_CAPS_pubmethodFromAsync<TArg1>(Func<TArg1, AsyncCallback, Object, IAsyncResult>, Func<IAsyncResult, TResult>, TArg1, Object, TaskCreationOptions)

Crea una tarea que representa un par de métodos Begin y End que se ajustan al modelo de programación asincrónica.

System_CAPS_pubmethodFromAsync<TArg1, TArg2>(Func<TArg1, TArg2, AsyncCallback, Object, IAsyncResult>, Func<IAsyncResult, TResult>, TArg1, TArg2, Object)

Crea una tarea que representa un par de métodos Begin y End que se ajustan al modelo de programación asincrónica.

System_CAPS_pubmethodFromAsync<TArg1, TArg2>(Func<TArg1, TArg2, AsyncCallback, Object, IAsyncResult>, Func<IAsyncResult, TResult>, TArg1, TArg2, Object, TaskCreationOptions)

Crea una tarea que representa un par de métodos Begin y End que se ajustan al modelo de programación asincrónica.

System_CAPS_pubmethodFromAsync<TArg1, TArg2, TArg3>(Func<TArg1, TArg2, TArg3, AsyncCallback, Object, IAsyncResult>, Func<IAsyncResult, TResult>, TArg1, TArg2, TArg3, Object)

Crea una tarea que representa un par de métodos Begin y End que se ajustan al modelo de programación asincrónica.

System_CAPS_pubmethodFromAsync<TArg1, TArg2, TArg3>(Func<TArg1, TArg2, TArg3, AsyncCallback, Object, IAsyncResult>, Func<IAsyncResult, TResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions)

Crea una tarea que representa un par de métodos Begin y End que se ajustan al modelo de programación asincrónica.

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodStartNew(Func<TResult>)

Crea e inicia una tarea.

System_CAPS_pubmethodStartNew(Func<TResult>, CancellationToken)

Crea e inicia una tarea.

System_CAPS_pubmethodStartNew(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler)

Crea e inicia una tarea.

System_CAPS_pubmethodStartNew(Func<TResult>, TaskCreationOptions)

Crea e inicia una tarea.

System_CAPS_pubmethodStartNew(Func<Object, TResult>, Object)

Crea e inicia una tarea.

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

Crea e inicia una tarea.

System_CAPS_pubmethodStartNew(Func<Object, TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

Crea e inicia una tarea.

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

Crea e inicia una tarea.

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

.NET Framework proporciona dos fábricas para crear y programar tareas:

La TaskFactory<TResult> clase le permite hacer lo siguiente:

  • Crear una tarea e iniciar inmediatamente al llamar a la StartNew (método). Puede llamar a las sobrecargas de este método para crear y ejecutar una tarea que requiere argumentos no predeterminados.

    System_CAPS_warningAdvertencia

    A partir de la .NET Framework 4.5, el Task.Run método proporciona la manera más fácil de crear una tarea con el valor predeterminado de valores de configuración e iniciar inmediatamente.

  • Crear una tarea que se inicia cuando se ha completado alguna de las tareas en una matriz mediante una llamada a la ContinueWhenAny o ContinueWhenAny<TResult> (método).

  • Crear una tarea que se inicia cuando se hayan completado todas las tareas en una matriz mediante una llamada a la ContinueWhenAll o ContinueWhenAll<TResult> (método).

Estático Task<TResult>.Factory propiedad devuelve el valor predeterminado es TaskFactory<TResult> objeto. También puede llamar a uno de los TaskFactory<TResult> clase constructores para configurar el Task<TResult> objetos que el TaskFactory<TResult> crea la clase. En el ejemplo siguiente se configura un nuevo TaskFactory<TResult> objeto para crear tareas que tengan un token de cancelación indicado, las opciones de creación de tareas, opciones de continuación y un programador de tareas personalizado.

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   static CancellationTokenSource cts = new CancellationTokenSource();

   static TaskFactory<int> factory = new TaskFactory<int>(
      cts.Token,
      TaskCreationOptions.PreferFairness,
      TaskContinuationOptions.ExecuteSynchronously,
      new CustomScheduler());

   static void Main()
   {
      var t2 = factory.StartNew(() => DoWork());
      cts.Dispose();
   }

   static int DoWork()
   {
       /*...*/
       return DateTime.Now.Hour <= 12 ?  1 : 2;
    }
}

En la mayoría de los casos, es necesario crear una instancia de un nuevo TaskFactory<TResult> instancia. En su lugar, puede usar estático Task<TResult>.Factory propiedad, que devuelve un objeto de fábrica que utiliza valores predeterminados. A continuación, se pueden llamar a sus métodos para comenzar las nuevas tareas o definir las continuaciones de tareas. Para ver una ilustración, vea el ejemplo.

En el ejemplo siguiente se utiliza estático Factory propiedad realizar dos llamadas a la TaskFactory<TResult>.StartNew (método). La primera tarea devuelve una matriz de cadena que se rellena con los nombres de los archivos del directorio Mis documentos del usuario, mientras que el segundo devuelve una matriz de cadenas que se rellena con los nombres de los subdirectorios del directorio de Mis documentos del usuario. A continuación, llama el TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) método, que muestra información acerca del número de archivos y directorios en las matrices devueltas por las dos tareas después de que se complete la ejecución.

using System;
using System.IO;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task<string[]>[] tasks = new Task<string[]>[2];
      String docsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

      tasks[0] = Task<string[]>.Factory.StartNew( () => Directory.GetFiles(docsDirectory));
      tasks[1] = Task<string[]>.Factory.StartNew( () => Directory.GetDirectories(docsDirectory));

      Task.Factory.ContinueWhenAll(tasks, completedTasks => {
                                             Console.WriteLine("{0} contains: ", docsDirectory);
                                             Console.WriteLine("   {0} subdirectories", tasks[1].Result.Length);
                                             Console.WriteLine("   {0} files", tasks[0].Result.Length);
                                          } );
   }
}
// The example displays output like the following:
//       C:\Users\<username>\Documents contains:
//          24 subdirectories
//          16 files

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 4.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 5.0
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1

Todos los miembros públicos y protegidos de TaskFactory<TResult> son seguros para subprocesos y se pueden usar desde varios subprocesos simultáneamente.

Volver al principio
Mostrar: