Task.Factory Właściwość
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 dostęp do metod fabrycznych do tworzenia i konfigurowania Task Task<TResult> wystąpień.
public:
static property System::Threading::Tasks::TaskFactory ^ Factory { System::Threading::Tasks::TaskFactory ^ get(); };
public static System.Threading.Tasks.TaskFactory Factory { get; }
member this.Factory : System.Threading.Tasks.TaskFactory
Public Shared ReadOnly Property Factory As TaskFactory
Wartość właściwości
Obiekt fabryki, który może tworzyć różne Task obiekty i Task<TResult> .
Uwagi
Ta właściwość zwraca domyślne wystąpienie TaskFactory klasy, która jest taka sama jak utworzona przez wywołanie konstruktora bez TaskFactory.TaskFactory() parametrów. Ma następujące wartości właściwości:
Najczęstszym zastosowaniem tej właściwości jest utworzenie i uruchomienie nowego zadania w jednym wywołaniu TaskFactory.StartNew metody.
Uwaga
Począwszy od .NET Framework 4.5, Task.Run metoda zapewnia najprostszy sposób tworzenia Task obiektu z domyślnymi wartościami konfiguracji.
W poniższym przykładzie użyto właściwości statycznej Factory do wykonania dwóch wywołań TaskFactory.StartNew metody . Pierwsza wypełnia tablicę nazwami plików w katalogu MyDocuments użytkownika, a druga 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