Task.Factory Propriedade

Definição

Fornece acesso a métodos de fábrica para criar e configurar as instâncias Task e 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 da propriedade

Um objeto de fábrica que pode criar uma variedade de objetos Task e Task<TResult>.A factory object that can create a variety of Task and Task<TResult> objects.

Comentários

Essa propriedade retorna uma instância padrão da classe TaskFactory que é idêntica à criada por meio da chamada do Construtor TaskFactory.TaskFactory() sem parâmetros.This property returns a default instance of the TaskFactory class that is identical to the one created by calling the parameterless TaskFactory.TaskFactory() constructor. Ele tem os seguintes valores de propriedade:It has the following property values:

PropriedadeProperty ValorValue
TaskFactory.CancellationToken CancellationToken.None
TaskFactory.ContinuationOptions TaskContinuationOptions.None
TaskFactory.CreationOptions TaskCreationOptions.None
TaskFactory.Scheduler nullou TaskScheduler.Currentnull, or TaskScheduler.Current

O uso mais comum dessa propriedade é criar e iniciar uma nova tarefa em uma única chamada para o 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.

Observação

Começando com o .NET Framework 4.5.NET Framework 4.5, o método Task.Run fornece a maneira mais fácil de criar um objeto Task com valores de configuração padrão.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.

O exemplo a seguir usa a propriedade estática Factory para fazer duas chamadas para o método TaskFactory.StartNew.The following example uses the static Factory property to make two calls to the TaskFactory.StartNew method. O primeiro popula uma matriz com os nomes dos arquivos no diretório MyDocuments do usuário, enquanto o segundo popula uma matriz com os nomes de subdiretórios do diretório MyDocuments do usuário.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. Em seguida, ele chama o método TaskFactory.ContinueWhenAll(Task[], Action<Task[]>), que exibe informações sobre o número de arquivos e diretórios nas duas matrizes após a conclusão da execução das duas primeiras tarefas.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

Aplica-se a

Veja também