TaskFactory Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapewnia obsługę tworzenia i planowania Task obiektów.
public ref class TaskFactory
public class TaskFactory
type TaskFactory = class
Public Class TaskFactory
- Dziedziczenie
-
TaskFactory
Przykłady
W poniższym przykładzie użyto właściwości statycznej Factory , aby wykonać dwa wywołania TaskFactory.StartNew metody . Pierwszy wypełnia tablicę nazwami plików w katalogu MyDocuments użytkownika, a drugi wypełnia tablicę nazwami podkatalogów katalogu MyDocuments użytkownika. Następnie wywołuje metodę TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) , która wyświetla informacje o liczbie plików i katalogów w dwóch tablicach po zakończeniu wykonywania pierwszych dwóch zadań.
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
Uwagi
Platforma .NET udostępnia dwie fabryki do tworzenia i planowania zadań:
Klasa TaskFactory , która tworzy Task obiekty i Task<TResult> . Możesz wywołać przeciążenia tej metody, aby utworzyć i wykonać zadanie, które wymaga argumentów innych niż domyślne.
Ostrzeżenie
Począwszy od .NET Framework 4.5, Task.Run metoda zapewnia najprostszy sposób utworzenia zadania z domyślnymi wartościami konfiguracji i natychmiastowego uruchomienia.
Klasa TaskFactory<TResult> , która tworzy Task<TResult> obiekty.
Klasa TaskFactory umożliwia wykonanie następujących czynności:
Utwórz zadanie i uruchom je natychmiast, wywołując metodę StartNew .
Ostrzeżenie
Począwszy od .NET Framework 4.5, Task.Run metoda zapewnia najprostszy sposób utworzenia zadania z domyślnymi wartościami konfiguracji i natychmiastowego uruchomienia.
Utwórz zadanie uruchamiane po ukończeniu jednego z zadań w tablicy przez wywołanie ContinueWhenAny metody .
Utwórz zadanie uruchamiane po zakończeniu wszystkich zadań w tablicy przez wywołanie ContinueWhenAll metody .
Właściwość statyczna Task<TResult>.Factory zwraca obiekt domyślny TaskFactory<TResult> . Można również wywołać jeden z TaskFactory konstruktorów klas, aby skonfigurować Task obiekty tworzone przez klasę TaskFactory . Poniższy przykład umożliwia skonfigurowanie nowego TaskFactory obiektu w celu utworzenia zadań z określonym tokenem anulowania, opcjami tworzenia zadań, opcjami kontynuacji i dostosowanym harmonogramem zadań.
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
W większości przypadków nie trzeba utworzyć wystąpienia nowego TaskFactory wystąpienia. Zamiast tego można użyć Task.Factory właściwości , która zwraca obiekt fabryki, który używa wartości domyślnych. Następnie można wywołać jego metody, aby uruchomić nowe zadania lub zdefiniować kontynuacje zadań. Aby zapoznać się z ilustracją, zobacz przykład.
Konstruktory
TaskFactory() |
Inicjuje TaskFactory wystąpienie z konfiguracją domyślną. |
TaskFactory(CancellationToken) |
Inicjuje TaskFactory wystąpienie z określoną konfiguracją. |
TaskFactory(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler) |
Inicjuje TaskFactory wystąpienie z określoną konfiguracją. |
TaskFactory(TaskCreationOptions, TaskContinuationOptions) |
Inicjuje TaskFactory wystąpienie z określoną konfiguracją. |
TaskFactory(TaskScheduler) |
Inicjuje TaskFactory wystąpienie z określoną konfiguracją. |
Właściwości
CancellationToken |
Pobiera domyślny token anulowania dla tej fabryki zadań. |
ContinuationOptions |
Pobiera domyślne opcje kontynuacji zadań dla tej fabryki zadań. |
CreationOptions |
Pobiera domyślne opcje tworzenia zadań dla tej fabryki zadań. |
Scheduler |
Pobiera domyślny harmonogram zadań dla tej fabryki zadań. |
Metody
ContinueWhenAll(Task[], Action<Task[]>) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll(Task[], Action<Task[]>, CancellationToken) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll(Task[], Action<Task[]>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll(Task[], Action<Task[]>, TaskContinuationOptions) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, TaskContinuationOptions) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, CancellationToken) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, TaskContinuationOptions) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, CancellationToken) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, TaskContinuationOptions) |
Tworzy zadanie kontynuacji uruchamiane po zakończeniu zestawu określonych zadań. |
ContinueWhenAny(Task[], Action<Task>) |
Tworzy kontynuację Task , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny(Task[], Action<Task>, CancellationToken) |
Tworzy kontynuację Task , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny(Task[], Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Tworzy kontynuację Task , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny(Task[], Action<Task>, TaskContinuationOptions) |
Tworzy kontynuację Task , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>) |
Tworzy kontynuację Task<TResult> , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken) |
Tworzy kontynuację Task<TResult> , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Tworzy kontynuację Task<TResult> , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, TaskContinuationOptions) |
Tworzy kontynuację Task<TResult> , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>) |
Tworzy kontynuację Task , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, CancellationToken) |
Tworzy kontynuację Task , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Tworzy kontynuację Task , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, TaskContinuationOptions) |
Tworzy kontynuację Task , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TResult>(Task[], Func<Task,TResult>) |
Tworzy kontynuację Task<TResult> , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TResult>(Task[], Func<Task,TResult>, CancellationToken) |
Tworzy kontynuację Task<TResult> , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TResult>(Task[], Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Tworzy kontynuację Task<TResult> , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
ContinueWhenAny<TResult>(Task[], Func<Task,TResult>, TaskContinuationOptions) |
Tworzy kontynuację Task<TResult> , która zostanie uruchomiona po zakończeniu dowolnego zadania w podanym zestawie. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object) |
Tworzy obiekt Task reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem asynchronicznego modelu programowania. |
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object, TaskCreationOptions) |
Tworzy element Task reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem modelu programowania asynchronicznego. |
FromAsync(IAsyncResult, Action<IAsyncResult>) |
Tworzy obiekt Task , który wykonuje akcję metody końcowej po zakończeniu określonej IAsyncResult metody. |
FromAsync(IAsyncResult, Action<IAsyncResult>, TaskCreationOptions) |
Tworzy obiekt Task , który wykonuje akcję metody końcowej po zakończeniu określonej IAsyncResult metody. |
FromAsync(IAsyncResult, Action<IAsyncResult>, TaskCreationOptions, TaskScheduler) |
Tworzy element Task , który wykonuje akcję metody końcowej po zakończeniu określonego IAsyncResult . |
FromAsync<TArg1,TArg2,TArg3,TResult>(Func<TArg1,TArg2,TArg3,AsyncCallback, Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object) |
Tworzy element Task<TResult> reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem modelu programowania asynchronicznego. |
FromAsync<TArg1,TArg2,TArg3,TResult>(Func<TArg1,TArg2,TArg3,AsyncCallback, Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions) |
Tworzy element Task<TResult> reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem modelu programowania asynchronicznego. |
FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, TArg3, Object) |
Tworzy element Task reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem modelu programowania asynchronicznego. |
FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback, Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions) |
Tworzy element Task reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem modelu programowania asynchronicznego. |
FromAsync<TArg1,TArg2,TResult>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object) |
Tworzy element Task<TResult> reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem modelu programowania asynchronicznego. |
FromAsync<TArg1,TArg2,TResult>(Func<TArg1,TArg2,AsyncCallback, Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object, TaskCreationOptions) |
Tworzy element Task<TResult> reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem modelu programowania asynchronicznego. |
FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, Object) |
Tworzy obiekt Task reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem asynchronicznego modelu programowania. |
FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, Object, TaskCreationOptions) |
Tworzy obiekt Task reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem asynchronicznego modelu programowania. |
FromAsync<TArg1,TResult>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object) |
Tworzy obiekt Task<TResult> reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem asynchronicznego modelu programowania. |
FromAsync<TArg1,TResult>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object, TaskCreationOptions) |
Tworzy obiekt Task<TResult> reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem asynchronicznego modelu programowania. |
FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, Object) |
Tworzy element Task reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem modelu programowania asynchronicznego. |
FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, Object, TaskCreationOptions) |
Tworzy element Task reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem modelu programowania asynchronicznego. |
FromAsync<TResult>(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object) |
Tworzy element Task<TResult> reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem modelu programowania asynchronicznego. |
FromAsync<TResult>(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object, TaskCreationOptions) |
Tworzy obiekt Task<TResult> reprezentujący parę metod początkowych i końcowych, które są zgodne ze wzorcem asynchronicznego modelu programowania. |
FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>) |
Tworzy obiekt Task<TResult> , który wykonuje funkcję metody końcowej po zakończeniu określonego IAsyncResult . |
FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions) |
Tworzy obiekt Task<TResult> , który wykonuje funkcję metody końcowej po zakończeniu określonego IAsyncResult . |
FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions, TaskScheduler) |
Tworzy obiekt Task<TResult> , który wykonuje funkcję metody końcowej po zakończeniu określonego IAsyncResult procesu. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
StartNew(Action) |
Tworzy i uruchamia zadanie dla określonego delegata akcji. |
StartNew(Action, CancellationToken) |
Tworzy i uruchamia zadanie dla określonego delegata akcji i tokenu anulowania. |
StartNew(Action, CancellationToken, TaskCreationOptions, TaskScheduler) |
Tworzy i uruchamia zadanie dla określonego delegata akcji, tokenu anulowania, opcji tworzenia i stanu. |
StartNew(Action, TaskCreationOptions) |
Tworzy i uruchamia zadanie dla określonego delegata akcji i opcji tworzenia. |
StartNew(Action<Object>, Object) |
Tworzy i uruchamia zadanie dla określonego delegata i stanu akcji. |
StartNew(Action<Object>, Object, CancellationToken) |
Tworzy i uruchamia zadanie dla określonego delegata akcji, stanu i tokenu anulowania. |
StartNew(Action<Object>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) |
Tworzy i uruchamia zadanie dla określonego delegata akcji, stanu, tokenu anulowania, opcji tworzenia i harmonogramu zadań. |
StartNew(Action<Object>, Object, TaskCreationOptions) |
Tworzy i uruchamia zadanie dla określonego delegata akcji, stanu i opcji tworzenia. |
StartNew<TResult>(Func<Object,TResult>, Object) |
Tworzy i uruchamia zadanie typu |
StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken) |
Tworzy i uruchamia zadanie typu |
StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) |
Tworzy i uruchamia zadanie typu |
StartNew<TResult>(Func<Object,TResult>, Object, TaskCreationOptions) |
Tworzy i uruchamia zadanie typu |
StartNew<TResult>(Func<TResult>) |
Tworzy i uruchamia zadanie typu |
StartNew<TResult>(Func<TResult>, CancellationToken) |
Tworzy i uruchamia zadanie typu |
StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) |
Tworzy i uruchamia zadanie typu |
StartNew<TResult>(Func<TResult>, TaskCreationOptions) |
Tworzy i uruchamia zadanie typu |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Dotyczy
Bezpieczeństwo wątkowe
Wszystkie publiczne i chronione elementy członkowskie są TaskFactory bezpieczne wątkowo i mogą być używane współbieżnie z wielu wątków.