TaskFactory Classe

Definição

Fornece suporte para criação e agendamento Task de objetos.

public ref class TaskFactory
public class TaskFactory
type TaskFactory = class
Public Class TaskFactory
Herança
TaskFactory

Exemplos

O exemplo seguinte usa a propriedade estática Factory para fazer duas chamadas ao TaskFactory.StartNew método. O primeiro preenche um array com os nomes dos ficheiros no diretório MyDocuments do utilizador, enquanto o segundo preenche um array com os nomes dos subdiretórios do diretório MyDocuments do utilizador. Depois chama o TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) método, que mostra informação sobre o número de ficheiros e diretórios nos dois arrays após a execução das duas primeiras tarefas.

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

Observações

O .NET fornece duas fábricas para criar e agendar tarefas:

  • A TaskFactory classe, que cria Task objetos Task<TResult> . Pode chamar as sobrecargas deste método para criar e executar uma tarefa que exija argumentos não padrão.

    Warning

    A partir do .NET Framework 4.5, o método Task.Run fornece a forma mais fácil de criar uma tarefa com valores de configuração padrão e iniciá-la imediatamente.

  • A TaskFactory<TResult> classe, que cria Task<TResult> objetos.

A TaskFactory aula permite-lhe fazer o seguinte:

  • Crie uma tarefa e inicie-a imediatamente chamando o StartNew método.

    Warning

    A partir do .NET Framework 4.5, o método Task.Run fornece a forma mais fácil de criar uma tarefa com valores de configuração padrão e iniciá-la imediatamente.

  • Crie uma tarefa que comece quando qualquer uma das tarefas de um array estiver concluída, chamando o ContinueWhenAny método.

  • Crie uma tarefa que comece quando todas as tarefas de um array estiverem concluídas, chamando o ContinueWhenAll método.

A propriedade estática Task<TResult>.Factory devolve um objeto por defeito TaskFactory<TResult> . Também pode chamar um dos TaskFactory construtores de classes para configurar os Task objetos que a TaskFactory classe cria. O exemplo seguinte configura um novo TaskFactory objeto para criar tarefas que tenham um token de cancelamento especificado, opções de criação de tarefas, opções de continuação e um agendador de tarefas personalizado.

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

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

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

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

   static void DoWork() {/*...*/ }
}
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim cts As New CancellationTokenSource()
      Dim factory As New TaskFactory(cts.Token,
                                     TaskCreationOptions.PreferFairness,
                                     TaskContinuationOptions.ExecuteSynchronously,
                                     New CustomScheduler())

      Dim t2 = factory.StartNew(Sub() DoWork())
      cts.Dispose()
   End Sub

   Sub DoWork()
      ' ...
   End Sub
End Module

Na maioria dos casos, não é necessário instanciar uma nova TaskFactory instância. Em vez disso, pode usar a Task.Factory propriedade, que devolve um objeto de fábrica que usa valores por defeito. Pode então chamar os seus métodos para iniciar novas tarefas ou definir continuações de tarefas. Para ilustração, veja o exemplo.

Construtores

Name Description
TaskFactory()

Inicializa uma TaskFactory instância com a configuração padrão.

TaskFactory(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler)

Inicializa uma TaskFactory instância com a configuração especificada.

TaskFactory(CancellationToken)

Inicializa uma TaskFactory instância com a configuração especificada.

TaskFactory(TaskCreationOptions, TaskContinuationOptions)

Inicializa uma TaskFactory instância com a configuração especificada.

TaskFactory(TaskScheduler)

Inicializa uma TaskFactory instância com a configuração especificada.

Propriedades

Name Description
CancellationToken

Recebe o token de cancelamento padrão para esta fábrica de tarefas.

ContinuationOptions

Obtém as opções padrão de continuação de tarefas para esta fábrica de tarefas.

CreationOptions

Obtém as opções padrão de criação de tarefas para esta fábrica de tarefas.

Scheduler

Obtém o agendador de tarefas padrão para esta fábrica de tarefas.

Métodos

Name Description
ContinueWhenAll(Task[], Action<Task[]>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

ContinueWhenAll(Task[], Action<Task[]>, CancellationToken)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

ContinueWhenAll(Task[], Action<Task[]>, TaskContinuationOptions)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

ContinueWhenAll(Task[], Action<Task[]>)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

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

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

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

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

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

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

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

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, CancellationToken)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, TaskContinuationOptions)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

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

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

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

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

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

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

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

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas é concluído.

ContinueWhenAny(Task[], Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma continuação Task que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

ContinueWhenAny(Task[], Action<Task>, CancellationToken)

Cria uma continuação Task que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

ContinueWhenAny(Task[], Action<Task>, TaskContinuationOptions)

Cria uma continuação Task que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

ContinueWhenAny(Task[], Action<Task>)

Cria uma continuação Task que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

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

Cria uma continuação Task<TResult> que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

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

Cria uma continuação Task<TResult> que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

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

Cria uma continuação Task<TResult> que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

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

Cria uma continuação Task<TResult> que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma continuação Task que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, CancellationToken)

Cria uma continuação Task que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, TaskContinuationOptions)

Cria uma continuação Task que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>)

Cria uma continuação Task que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

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

Cria uma continuação Task<TResult> que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

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

Cria uma continuação Task<TResult> que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

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

Cria uma continuação Task<TResult> que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

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

Cria uma continuação Task<TResult> que será iniciada após a conclusão de qualquer Tarefa no conjunto fornecido.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object, TaskCreationOptions)

Cria um Task que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object)

Cria um Task que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

FromAsync(IAsyncResult, Action<IAsyncResult>, TaskCreationOptions, TaskScheduler)

Cria um Task que executa uma ação de fim de método quando um especificado IAsyncResult é concluído.

FromAsync(IAsyncResult, Action<IAsyncResult>, TaskCreationOptions)

Cria um Task que executa uma ação de fim de método quando um especificado IAsyncResult é concluído.

FromAsync(IAsyncResult, Action<IAsyncResult>)

Cria um Task que executa uma ação de fim de método quando um especificado IAsyncResult é concluído.

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

Cria um Task<TResult> que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

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

Cria um Task<TResult> que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback, Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions)

Cria um Task que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, TArg3, Object)

Cria um Task que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

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

Cria um Task<TResult> que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

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

Cria um Task<TResult> que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, Object, TaskCreationOptions)

Cria um Task que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, Object)

Cria um Task que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

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

Cria um Task<TResult> que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

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

Cria um Task<TResult> que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, Object, TaskCreationOptions)

Cria um Task que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, Object)

Cria um Task que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

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

Cria um Task<TResult> que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

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

Cria um Task<TResult> que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrono.

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

Cria um Task<TResult> que executa uma função de método final quando um especificado IAsyncResult é concluído.

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

Cria um Task<TResult> que executa uma função de método final quando um especificado IAsyncResult é concluído.

FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>)

Cria um Task<TResult> que executa uma função de método final quando um especificado IAsyncResult é concluído.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
StartNew(Action, CancellationToken, TaskCreationOptions, TaskScheduler)

Cria e inicia uma tarefa para o delegado de ação especificado, token de cancelamento, opções de criação e estado.

StartNew(Action, CancellationToken)

Cria e inicia uma tarefa para o delegado de ação especificado e o token de cancelamento.

StartNew(Action, TaskCreationOptions)

Cria e inicia uma tarefa para as opções de delegação e criação de ação especificadas.

StartNew(Action)

Cria e inicia uma tarefa para o delegado de ação especificado.

StartNew(Action<Object>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

Cria e inicia uma tarefa para o delegado de ação, estado, token de cancelamento, opções de criação e agendador de tarefas especificados.

StartNew(Action<Object>, Object, CancellationToken)

Cria e inicia uma tarefa para o delegado, estado e token de cancelamento especificados.

StartNew(Action<Object>, Object, TaskCreationOptions)

Cria e inicia uma tarefa para as opções de delegar de ação, estado e criação especificadas.

StartNew(Action<Object>, Object)

Cria e inicia uma tarefa para a ação especificada, delegar e estabelecer.

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

Cria e inicia uma tarefa do tipo TResult para a função especificada: delegar, estado, token de cancelamento, opções de criação e agendador de tarefas.

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

Cria e inicia uma tarefa do tipo TResult para a função especificada: delegar, estar e token de cancelamento.

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

Cria e inicia uma tarefa do tipo TResult para as funções especificadas de delegar, estado e opções de criação.

StartNew<TResult>(Func<Object,TResult>, Object)

Cria e inicia uma tarefa do tipo TResult para a função especificada delegar e estado.

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

Cria e inicia uma tarefa do tipo TResult para a função delegada, token de cancelamento, opções de criação e agendador de tarefas especificados.

StartNew<TResult>(Func<TResult>, CancellationToken)

Cria e inicia uma tarefa do tipo TResult para a função especificada de delegar e cancelamento.

StartNew<TResult>(Func<TResult>, TaskCreationOptions)

Cria e inicia uma tarefa do tipo TResult para as funções especificadas de delegar e opções de criação.

StartNew<TResult>(Func<TResult>)

Cria e inicia uma tarefa do tipo TResult para a função delegada especificada.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Segurança de Thread

Todos os membros públicos e protegidos são TaskFactory seguros para threads e podem ser usados simultaneamente a partir de múltiplos threads.

Ver também