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

Propiedad Task.Factory

 

Publicado: octubre de 2016

Proporciona acceso a patrones de diseño para crear y configurar instancias de Task y Task<TResult>.

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

public static TaskFactory Factory { get; }

Valor de propiedad

Type: System.Threading.Tasks.TaskFactory

Un objeto de fábrica que puede crear una variedad de objetos Task y Task<TResult>.

Esta propiedad devuelve una instancia predeterminada de la TaskFactory que es idéntica a la que se crean mediante una llamada sin parámetros TaskFactory.TaskFactory() constructor. Tiene los siguientes valores de propiedad:

Propiedad

Valor

TaskFactory.CancellationToken

CancellationToken.None

TaskFactory.ContinuationOptions

TaskContinuationOptions.None

TaskFactory.CreationOptions

TaskCreationOptions.None

TaskFactory.Scheduler

null, o TaskScheduler.Current

El uso más común de esta propiedad es crear e iniciar una nueva tarea en una única llamada a la TaskFactory.StartNew (método).

System_CAPS_noteNota

A partir de la .NET Framework 4.5, el Task.Run método proporciona la manera más fácil de crear un Task objeto con valores de configuración predeterminados.

En el ejemplo siguiente se utiliza estático Factory propiedad realizar dos llamadas a la TaskFactory.StartNew (método). La primera rellena una matriz con los nombres de los archivos del directorio Mis documentos del usuario, mientras que el segundo rellena una matriz 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 dos matrices después de las dos primeras tareas completan la ejecución.

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

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

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

      Task.Factory.ContinueWhenAll(tasks, completedTasks => {
                                             Console.WriteLine("{0} contains: ", docsDirectory);
                                             Console.WriteLine("   {0} subdirectories", dirs.Length);
                                             Console.WriteLine("   {0} files", files.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
Volver al principio
Mostrar: