Task.Factory Vlastnost

Definice

Poskytuje přístup k výrobním metodám pro vytváření a konfiguraci instancí Task a Task<TResult>.Provides access to factory methods for creating and configuring Task and Task<TResult> instances.

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

Hodnota vlastnosti

Objekt factory, který může vytvořit nejrůznější objekty Task a Task<TResult>.A factory object that can create a variety of Task and Task<TResult> objects.

Poznámky

Tato vlastnost vrací výchozí instanci třídy TaskFactory, která je shodná s třídou vytvořenou voláním konstruktoru TaskFactory.TaskFactory() bez parametrů.This property returns a default instance of the TaskFactory class that is identical to the one created by calling the parameterless TaskFactory.TaskFactory() constructor. Má následující hodnoty vlastností:It has the following property values:

VlastnostProperty HodnotaValue
TaskFactory.CancellationToken CancellationToken.None
TaskFactory.ContinuationOptions TaskContinuationOptions.None
TaskFactory.CreationOptions TaskCreationOptions.None
TaskFactory.Scheduler null nebo TaskScheduler.Currentnull, or TaskScheduler.Current

Nejběžnějším použitím této vlastnosti je vytvoření a spuštění nové úlohy v jednom volání metody TaskFactory.StartNew.The most common use of this property is to create and start a new task in a single call to the TaskFactory.StartNew method.

Poznámka

Počínaje .NET Framework 4.5.NET Framework 4.5Task.Run metoda poskytuje nejjednodušší způsob, jak vytvořit objekt Task s výchozími hodnotami konfigurace.Starting with the .NET Framework 4.5.NET Framework 4.5, the Task.Run method provides the easiest way to create a Task object with default configuration values.

Následující příklad používá vlastnost Static Factory k vytvoření dvou volání metody TaskFactory.StartNew.The following example uses the static Factory property to make two calls to the TaskFactory.StartNew method. První naplní pole názvy souborů v adresáři dokumenty uživatele, zatímco druhý vyplní pole názvy podadresářů adresáře Dokumenty uživatele.The first populates an array with the names of files in the user's MyDocuments directory, while the second populates an array with the names of subdirectories of the user's MyDocuments directory. Poté zavolá metodu TaskFactory.ContinueWhenAll(Task[], Action<Task[]>), která zobrazí informace o počtu souborů a adresářů v obou polích po dokončení prvních dvou úloh.It then calls the TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) method, which displays information about the number of files and directories in the two arrays after the first two tasks have completed execution.

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

Platí pro

Viz také