Task.Factory Task.Factory Task.Factory Task.Factory Property

Definición

Proporciona acceso a patrones de diseño para crear y configurar instancias de Task y Task<TResult>.Provides access to factory methods for creating and configuring Task and Task<TResult> instances.

public:
 static property System::Threading::Tasks::TaskFactory ^ Factory { System::Threading::Tasks::TaskFactory ^ get(); };
public static System.Threading.Tasks.TaskFactory Factory { get; }
member this.Factory : System.Threading.Tasks.TaskFactory
Public Shared ReadOnly Property Factory As TaskFactory

Valor de propiedad

Un objeto de fábrica que puede crear una variedad de objetos Task y Task<TResult>.A factory object that can create a variety of Task and Task<TResult> objects.

Comentarios

Esta propiedad devuelve una instancia predeterminada de la clase TaskFactory que es idéntica a la creada mediante una llamada al constructor sin parámetros TaskFactory.TaskFactory().This property returns a default instance of the TaskFactory class that is identical to the one created by calling the parameterless TaskFactory.TaskFactory() constructor. Tiene los siguientes valores de propiedad:It has the following property values:

Propiedad.Property ValorValue
TaskFactory.CancellationToken CancellationToken.None
TaskFactory.ContinuationOptions TaskContinuationOptions.None
TaskFactory.CreationOptions TaskCreationOptions.None
TaskFactory.Scheduler null o TaskScheduler.Currentnull, or TaskScheduler.Current

El uso más común de esta propiedad es crear e iniciar una nueva tarea en una única llamada al método TaskFactory.StartNew.The most common use of this property is to create and start a new task in a single call to the TaskFactory.StartNew method.

Nota

A partir de .NET Framework 4.5.NET Framework 4.5, el método Task.Run proporciona la manera más sencilla de crear un objeto Task con valores de configuración predeterminados.Starting with the .NET Framework 4.5.NET Framework 4.5, the Task.Run method provides the easiest way to create a Task object with default configuration values.

En el ejemplo siguiente se usa la propiedad estática Factory para realizar dos llamadas al método TaskFactory.StartNew.The following example uses the static Factory property to make two calls to the TaskFactory.StartNew method. La primera rellena una matriz con los nombres de los archivos del directorio mis documentos del usuario, mientras que la segunda rellena una matriz con los nombres de los subdirectorios del directorio mis documentos del usuario.The first populates an array with the names of files in the user's MyDocuments directory, while the second populates an array with the names of subdirectories of the user's MyDocuments directory. A continuación, llama al método TaskFactory.ContinueWhenAll(Task[], Action<Task[]>), que muestra información sobre el número de archivos y directorios de las dos matrices después de que las dos primeras tareas hayan finalizado su ejecución.It then calls the TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) method, which displays information about the number of files and directories in the two arrays after the first two tasks have completed execution.

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
Imports System.IO
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim tasks(1) As Task
      Dim files() As String = Nothing
      Dim dirs() As String = Nothing
      Dim docsDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
      
      tasks(0) = Task.Factory.StartNew( Sub()
                                           files = Directory.GetFiles(docsDirectory)
                                        End Sub )
      tasks(1) = Task.Factory.StartNew( Sub()
                                           dirs = Directory.GetDirectories(docsDirectory)
                                        End Sub )
      Task.Factory.ContinueWhenAll(tasks, Sub(completedTasks)
                                             Console.WriteLine("{0} contains: ", docsDirectory)
                                             Console.WriteLine("   {0} subdirectories", dirs.Length)
                                             Console.WriteLine("   {0} files", files.Length)
                                          End Sub)
   End Sub
End Module
' The example displays output like the following:
'       C:\Users\<username>\Documents contains:
'          24 subdirectories
'          16 files

Se aplica a

Consulte también: