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 criar e agendar Task objetos.
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 popula 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 exige argumentos não padrão.
Aviso
A partir do .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
A partir do .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 for concluída chamando o ContinueWhenAny método.
Crie uma tarefa que comece quando todas as tarefas em uma matriz forem 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 instanciar uma nova TaskFactory instância. 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
| Nome | 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
| Nome | Description |
|---|---|
| CancellationToken |
Obtém o token de cancelamento padrão para este fábrica de tarefas. |
| ContinuationOptions |
Obtém as opções de continuação de tarefa padrão para este fábrica de tarefas. |
| CreationOptions |
Obtém as opções de criação de tarefas padrão para este fábrica de tarefas. |
| Scheduler |
Obtém o agendador de tarefas padrão para este fábrica de tarefas. |
Métodos
| Nome | 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de Modelo de Programação Assíncrono. |
| FromAsync(IAsyncResult, Action<IAsyncResult>, TaskCreationOptions, TaskScheduler) |
Cria um Task que executa uma ação de método final quando uma especificada é IAsyncResult concluída. |
| FromAsync(IAsyncResult, Action<IAsyncResult>, TaskCreationOptions) |
Cria um Task que executa uma ação de método final quando uma especificada é IAsyncResult concluída. |
| FromAsync(IAsyncResult, Action<IAsyncResult>) |
Cria um Task que executa uma ação de método final quando uma especificada é IAsyncResult concluída. |
| 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 término que estão em conformidade com o padrão de 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 uma especificada é IAsyncResult concluída. |
| FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions) |
Cria um Task<TResult> que executa uma função de método final quando uma especificada é IAsyncResult concluída. |
| FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>) |
Cria um Task<TResult> que executa uma função de método final quando uma especificada é IAsyncResult concluída. |
| 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 Objectatual. (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 representante de ação especificado e o token de cancelamento. |
| StartNew(Action, TaskCreationOptions) |
Cria e inicia uma tarefa para as opções de criação e delegado de ação especificados. |
| 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, o estado, o token de cancelamento, as opções de criação e o agendador de tarefas especificados. |
| StartNew(Action<Object>, Object, CancellationToken) |
Cria e inicia uma tarefa para o representante de ação, o estado e o token de cancelamento 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(Action<Object>, Object) |
Cria e inicia uma tarefa para o delegado e o estado da ação especificados. |
| StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) |
Cria e inicia uma tarefa de tipo |
| StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken) |
Cria e inicia uma tarefa do tipo |
| StartNew<TResult>(Func<Object,TResult>, Object, TaskCreationOptions) |
Cria e inicia uma tarefa de tipo |
| StartNew<TResult>(Func<Object,TResult>, Object) |
Cria e inicia uma tarefa do tipo |
| StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) |
Cria e inicia uma tarefa de tipo |
| StartNew<TResult>(Func<TResult>, CancellationToken) |
Cria e inicia uma tarefa de tipo |
| StartNew<TResult>(Func<TResult>, TaskCreationOptions) |
Cria e inicia uma tarefa de tipo |
| StartNew<TResult>(Func<TResult>) |
Cria e inicia uma tarefa de 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.