TaskFactory<TResult> Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece suporte para criação e agendamento Task<TResult> de objetos.
generic <typename TResult>
public ref class TaskFactory
public class TaskFactory<TResult>
type TaskFactory<'Result> = class
Public Class TaskFactory(Of TResult)
Parâmetros de Tipo Genérico
- TResult
O valor de retorno dos Task<TResult> objetos que os métodos desta classe criam.
- Herança
-
TaskFactory<TResult>
Exemplos
O exemplo seguinte usa a propriedade estática Factory para fazer duas chamadas ao TaskFactory<TResult>.StartNew método. A primeira tarefa devolve um array de cadeias que é preenchido com os nomes dos ficheiros no diretório MyDocuments do utilizador, enquanto a segunda devolve um array de strings preenchido com os nomes dos subdiretórios do diretório MyDocuments do utilizador. Depois chama o TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) método, que apresenta informação sobre o número de ficheiros e diretórios nos arrays devolvidos pelas duas tarefas após a sua execução.
using System;
using System.IO;
using System.Threading.Tasks;
public class Example
{
public static void Main()
{
Task<string[]>[] tasks = new Task<string[]>[2];
String docsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
tasks[0] = Task<string[]>.Factory.StartNew( () => Directory.GetFiles(docsDirectory));
tasks[1] = Task<string[]>.Factory.StartNew( () => Directory.GetDirectories(docsDirectory));
Task.Factory.ContinueWhenAll(tasks, completedTasks => {
Console.WriteLine("{0} contains: ", docsDirectory);
Console.WriteLine(" {0} subdirectories", tasks[1].Result.Length);
Console.WriteLine(" {0} files", tasks[0].Result.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(Of String())
Dim docsDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
tasks(0) = Task(Of String()).Factory.StartNew( Function()Directory.GetFiles(docsDirectory) )
'' End Sub )
tasks(1) = Task(Of String()).Factory.StartNew( Function() Directory.GetDirectories(docsDirectory) )
'' End Sub )
Task.Factory.ContinueWhenAll(tasks, Sub(completedTasks)
Console.WriteLine("{0} contains: ", docsDirectory)
Console.WriteLine(" {0} subdirectories", tasks(1).Result.Length)
Console.WriteLine(" {0} files", tasks(0).Result.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> .
A TaskFactory<TResult> classe, que cria Task<TResult> objetos.
A TaskFactory<TResult> aula permite-lhe fazer o seguinte:
Crie uma tarefa e inicie-a imediatamente chamando o StartNew método. 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.
Crie uma tarefa que comece quando qualquer uma das tarefas de um array for concluída, chamando o ContinueWhenAny método ou ContinueWhenAny .
Crie uma tarefa que comece quando todas as tarefas de um array forem concluídas, chamando o ContinueWhenAll método ou.ContinueWhenAll
A propriedade estática Task<TResult>.Factory devolve um objeto por defeito TaskFactory<TResult> . Também pode chamar um dos TaskFactory<TResult> construtores de classes para configurar os Task<TResult> objetos que a TaskFactory<TResult> classe cria. O exemplo seguinte configura um novo TaskFactory<TResult> 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;
public class Example
{
static CancellationTokenSource cts = new CancellationTokenSource();
static TaskFactory<int> factory = new TaskFactory<int>(
cts.Token,
TaskCreationOptions.PreferFairness,
TaskContinuationOptions.ExecuteSynchronously,
new CustomScheduler());
static void Main()
{
var t2 = factory.StartNew(() => DoWork());
cts.Dispose();
}
static int DoWork()
{
/*...*/
return DateTime.Now.Hour <= 12 ? 1 : 2;
}
}
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(Of Integer)(
cts.Token,
TaskCreationOptions.PreferFairness,
TaskContinuationOptions.ExecuteSynchronously,
New CustomScheduler())
Dim t2 = factory.StartNew(Function() DoWork())
cts.Dispose()
End Sub
Function DoWork() As Integer
Return If(Date.Now.Hour <= 12, 1, 2)
End Function
End Module
Na maioria dos casos, não é necessário instanciar uma nova TaskFactory<TResult> instância. Em vez disso, pode usar a propriedade estática Task<TResult>.Factory , 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<TResult>() |
Inicializa uma TaskFactory<TResult> instância com a configuração padrão. |
| TaskFactory<TResult>(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler) |
Inicializa uma TaskFactory<TResult> instância com a configuração especificada. |
| TaskFactory<TResult>(CancellationToken) |
Inicializa uma TaskFactory<TResult> instância com a configuração padrão. |
| TaskFactory<TResult>(TaskCreationOptions, TaskContinuationOptions) |
Inicializa uma TaskFactory<TResult> instância com a configuração especificada. |
| TaskFactory<TResult>(TaskScheduler) |
Inicializa uma TaskFactory<TResult> 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 o TaskContinuationOptions valor de enumeração para esta fábrica de tarefas. |
| CreationOptions |
Obtém o TaskCreationOptions valor de enumeração para esta fábrica de tarefas. |
| Scheduler |
Obtém o agendador de tarefas para esta fábrica de tarefas. |
Métodos
| Name | Description |
|---|---|
| ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Cria uma tarefa de continuação que será iniciada após a conclusão de um conjunto de Tarefas fornecidas. |
| ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken) |
Cria uma tarefa de continuação que será iniciada após a conclusão de um conjunto de tarefas fornecidas. |
| ContinueWhenAll(Task[], Func<Task[],TResult>, TaskContinuationOptions) |
Cria uma tarefa de continuação que será iniciada após a conclusão de um conjunto de Tarefas fornecidas. |
| ContinueWhenAll(Task[], Func<Task[],TResult>) |
Cria uma tarefa de continuação que será iniciada após a conclusão de um conjunto de tarefas fornecidas. |
| ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Cria uma tarefa de continuação que será iniciada após a conclusão de um conjunto de tarefas fornecidas. |
| ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken) |
Cria uma tarefa de continuação que será iniciada após a conclusão de um conjunto de tarefas fornecidas. |
| ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, TaskContinuationOptions) |
Cria uma tarefa de continuação que será iniciada após a conclusão de um conjunto de tarefas fornecidas. |
| ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>) |
Cria uma tarefa de continuação que será iniciada após a conclusão de um conjunto de tarefas fornecidas. |
| ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Cria uma tarefa de continuação que será iniciada após a conclusão de qualquer tarefa no conjunto fornecido. |
| ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken) |
Cria uma tarefa de continuação que será iniciada após a conclusão de qualquer tarefa no conjunto fornecido. |
| ContinueWhenAny(Task[], Func<Task,TResult>, TaskContinuationOptions) |
Cria uma tarefa de continuação que será iniciada após a conclusão de qualquer tarefa no conjunto fornecido. |
| ContinueWhenAny(Task[], Func<Task,TResult>) |
Cria uma tarefa de continuação que será iniciada após a conclusão de qualquer tarefa no conjunto fornecido. |
| ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Cria uma tarefa de continuação que será iniciada após a conclusão de qualquer tarefa no conjunto fornecido. |
| ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken) |
Cria uma tarefa de continuação que será iniciada após a conclusão de qualquer tarefa no conjunto fornecido. |
| ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, TaskContinuationOptions) |
Cria uma tarefa de continuação que será iniciada após a conclusão de qualquer tarefa no conjunto fornecido. |
| ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>) |
Cria uma tarefa de continuação 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>, Func<IAsyncResult,TResult>, Object, TaskCreationOptions) |
Cria uma tarefa que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrona. |
| FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object) |
Cria uma tarefa que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrona. |
| FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions, TaskScheduler) |
Cria uma tarefa que executa uma função de fim de método quando uma especificada IAsyncResult é concluída. |
| FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions) |
Cria uma tarefa que executa uma função de fim de método quando uma especificada IAsyncResult é concluída. |
| FromAsync(IAsyncResult, Func<IAsyncResult,TResult>) |
Cria uma tarefa que executa uma função de fim de método quando uma especificada IAsyncResult é concluída. |
| FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback, Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions) |
Cria uma tarefa que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrona. |
| FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object) |
Cria uma tarefa que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrona. |
| FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object, TaskCreationOptions) |
Cria uma tarefa que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrona. |
| FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object) |
Cria uma tarefa que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrona. |
| FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object, TaskCreationOptions) |
Cria uma tarefa que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrona. |
| FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object) |
Cria uma tarefa que representa um par de métodos de início e fim que seguem o padrão do Modelo de Programação Assíncrona. |
| 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(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) |
Cria e inicia uma tarefa. |
| StartNew(Func<Object,TResult>, Object, CancellationToken) |
Cria e inicia uma tarefa. |
| StartNew(Func<Object,TResult>, Object, TaskCreationOptions) |
Cria e inicia uma tarefa. |
| StartNew(Func<Object,TResult>, Object) |
Cria e inicia uma tarefa. |
| StartNew(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) |
Cria e inicia uma tarefa. |
| StartNew(Func<TResult>, CancellationToken) |
Cria e inicia uma tarefa. |
| StartNew(Func<TResult>, TaskCreationOptions) |
Cria e inicia uma tarefa. |
| StartNew(Func<TResult>) |
Cria e inicia uma tarefa. |
| 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<TResult> seguros para threads e podem ser usados simultaneamente a partir de múltiplos threads.