TaskFactory Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece suporte para criação e agendamento de objetos Task.
public ref class TaskFactory
public class TaskFactory
type TaskFactory = class
Public Class TaskFactory
- Herança
-
TaskFactory
Exemplos
O exemplo a seguir usa a propriedade estática Factory para fazer duas chamadas para o TaskFactory.StartNew método. O primeiro preenche uma matriz com os nomes dos arquivos no diretório MyDocuments do usuário, enquanto o segundo preenche uma matriz com os nomes de subdiretórios do diretório MyDocuments do usuário. Em seguida, ele chama o TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) método, 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.
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
Comentários
O .NET fornece duas fábricas para criar e agendar tarefas:
A TaskFactory classe, que cria Task e Task<TResult> objetos. Você pode chamar as sobrecargas desse método para criar e executar uma tarefa que requer argumentos não padrão.
Aviso
Começando com .NET Framework 4.5, o Task.Run método fornece a maneira 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 classe permite que você faça o seguinte:
Crie uma tarefa e inicie-a imediatamente chamando o StartNew método.
Aviso
Começando com .NET Framework 4.5, o Task.Run método fornece a maneira 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 em uma matriz tiver sido concluída chamando o ContinueWhenAny método.
Crie uma tarefa que comece quando todas as tarefas em uma matriz tiverem sido concluídas chamando o ContinueWhenAll método.
A propriedade estática Task<TResult>.Factory retorna um objeto padrão TaskFactory<TResult> . Você também pode chamar um dos construtores de TaskFactory classe para configurar os Task objetos que a TaskFactory classe cria. O exemplo a seguir configura um novo TaskFactory objeto para criar tarefas que têm 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, você não precisa criar uma instância nova TaskFactory . Em vez disso, você pode usar a Task.Factory propriedade, que retorna um objeto de fábrica que usa valores padrão. Em seguida, você pode chamar seus métodos para iniciar novas tarefas ou definir continuações de tarefa. Para obter uma ilustração, consulte o exemplo.
Construtores
TaskFactory() |
Inicializa uma instância de TaskFactory com a configuração padrão. |
TaskFactory(CancellationToken) |
Inicializa uma instância TaskFactory com a configuração especificada. |
TaskFactory(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler) |
Inicializa uma instância TaskFactory com a configuração especificada. |
TaskFactory(TaskCreationOptions, TaskContinuationOptions) |
Inicializa uma instância TaskFactory com a configuração especificada. |
TaskFactory(TaskScheduler) |
Inicializa uma instância TaskFactory com a configuração especificada. |
Propriedades
CancellationToken |
Obtém o token de cancelamento padrão desta fábrica de tarefas. |
ContinuationOptions |
Obtém as opções de continuação de tarefas padrão dessa fábrica de tarefas. |
CreationOptions |
Obtém as opções de criação de tarefa padrão para essa fábrica de tarefas. |
Scheduler |
Obtém o agendador de tarefas padrão para esta fábrica de tarefas. |
Métodos
ContinueWhenAll(Task[], Action<Task[]>) |
Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído. |
ContinueWhenAll(Task[], Action<Task[]>, CancellationToken) |
Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído. |
ContinueWhenAll(Task[], Action<Task[]>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído. |
ContinueWhenAll(Task[], Action<Task[]>, TaskContinuationOptions) |
Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi 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 foi 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 foi 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 foi 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 foi concluído. |
ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>) |
Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi 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 foi 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 foi 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 foi concluído. |
ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>) |
Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído. |
ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, CancellationToken) |
Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi 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 foi concluído. |
ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, TaskContinuationOptions) |
Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído. |
ContinueWhenAny(Task[], Action<Task>) |
Cria um Task de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny(Task[], Action<Task>, CancellationToken) |
Cria um Task de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny(Task[], Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Cria um Task de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny(Task[], Action<Task>, TaskContinuationOptions) |
Cria um Task de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>) |
Cria um Task<TResult> de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken) |
Cria um Task<TResult> de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Cria um Task<TResult> de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, TaskContinuationOptions) |
Cria um Task<TResult> de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>) |
Cria um Task de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, CancellationToken) |
Cria um Task de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Cria um Task de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, TaskContinuationOptions) |
Cria um Task de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TResult>(Task[], Func<Task,TResult>) |
Cria um Task<TResult> de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TResult>(Task[], Func<Task,TResult>, CancellationToken) |
Cria um Task<TResult> de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TResult>(Task[], Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Cria um Task<TResult> de continuação que será iniciado mediante a conclusão de qualquer Tarefa no conjunto fornecido. |
ContinueWhenAny<TResult>(Task[], Func<Task,TResult>, TaskContinuationOptions) |
Cria um Task<TResult> de continuação que será iniciado mediante 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) |
Cria um Task que representa um par de métodos begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object, TaskCreationOptions) |
Cria um Task que representa um par de métodos begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
FromAsync(IAsyncResult, Action<IAsyncResult>) |
Cria um Task que executa uma ação do método de encerramento quando um IAsyncResult especificado é concluído. |
FromAsync(IAsyncResult, Action<IAsyncResult>, TaskCreationOptions) |
Cria um Task que executa uma ação do método de encerramento quando um IAsyncResult especificado é concluído. |
FromAsync(IAsyncResult, Action<IAsyncResult>, TaskCreationOptions, TaskScheduler) |
Cria um Task que executa uma ação do método de encerramento quando um IAsyncResult especificado é concluído. |
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 begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
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 begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
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 begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
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 begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
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 begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
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 begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, Object) |
Cria um Task que representa um par de métodos begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
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 begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
FromAsync<TArg1,TResult>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object) |
Cria um Task<TResult> que representa um par de métodos begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
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 begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, Object) |
Cria um Task que representa um par de métodos begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, Object, TaskCreationOptions) |
Cria um Task que representa um par de métodos begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
FromAsync<TResult>(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object) |
Cria um Task<TResult> que representa um par de métodos begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
FromAsync<TResult>(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object, TaskCreationOptions) |
Cria um Task<TResult> que representa um par de métodos begin e end que estão em conformidade com o padrão do Modelo de Programação Assíncrona. |
FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>) |
Cria uma Task<TResult> que executa uma função do método de encerramento quando um IAsyncResult especificado é concluído. |
FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions) |
Cria uma Task<TResult> que executa uma função do método de encerramento quando um IAsyncResult especificado é concluído. |
FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions, TaskScheduler) |
Cria uma Task<TResult> que executa uma função do método de encerramento quando um IAsyncResult especificado é concluído. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
StartNew(Action) |
Cria e inicia uma tarefa para o delegado de ação especificado. |
StartNew(Action, CancellationToken) |
Cria e inicia uma tarefa para o delegado de ação e o token de cancelamento especificados. |
StartNew(Action, CancellationToken, TaskCreationOptions, TaskScheduler) |
Cria e inicia uma tarefa para o delegado de ação, o token de cancelamento, as opções de criação e o estado especificados. |
StartNew(Action, TaskCreationOptions) |
Cria e inicia uma tarefa para o delegado de ação e as opções de criação especificados. |
StartNew(Action<Object>, Object) |
Cria e inicia uma tarefa para o delegado de ação e o estado especificados. |
StartNew(Action<Object>, Object, CancellationToken) |
Cria e inicia uma tarefa para o delegado de ação, o estado e o token de cancelamento especificados. |
StartNew(Action<Object>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) |
Cria e inicia uma tarefa para o delegado de ação, o estado, o token de cancelamento, as opções de criação e o agendador de tarefas especificados. |
StartNew(Action<Object>, Object, TaskCreationOptions) |
Cria e inicia uma tarefa para o delegado de ação, o estado e as opções de criação especificados. |
StartNew<TResult>(Func<Object,TResult>, Object) |
Cria e inicia uma tarefa do tipo |
StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken) |
Cria e inicia uma tarefa do tipo |
StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) |
Cria e inicia uma tarefa do tipo |
StartNew<TResult>(Func<Object,TResult>, Object, TaskCreationOptions) |
Cria e inicia uma tarefa do tipo |
StartNew<TResult>(Func<TResult>) |
Cria e inicia uma tarefa do tipo |
StartNew<TResult>(Func<TResult>, CancellationToken) |
Cria e inicia uma tarefa do tipo |
StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) |
Cria e inicia uma tarefa do tipo |
StartNew<TResult>(Func<TResult>, TaskCreationOptions) |
Cria e inicia uma tarefa do tipo |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Aplica-se a
Acesso thread-safe
Todos os membros públicos e protegidos TaskFactory são thread-safe e podem ser usados simultaneamente de vários threads.