Task.Factory Task.Factory Task.Factory Task.Factory Property

Определение

Предоставляет доступ к фабричным методам для создания и настройки экземпляров Task и 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

Значение свойства

Объект фабрики, который может создавать разнообразные объекты Task и Task<TResult>.A factory object that can create a variety of Task and Task<TResult> objects.

Комментарии

Это свойство возвращает экземпляр по умолчанию класса TaskFactory, идентичный тому, который был создан путем вызова конструктора без параметров TaskFactory.TaskFactory().This property returns a default instance of the TaskFactory class that is identical to the one created by calling the parameterless TaskFactory.TaskFactory() constructor. Он имеет следующие значения свойств:It has the following property values:

Свойство.Property ЗначениеValue
TaskFactory.CancellationToken CancellationToken.None
TaskFactory.ContinuationOptions TaskContinuationOptions.None
TaskFactory.CreationOptions TaskCreationOptions.None
TaskFactory.Scheduler null или TaskScheduler.Currentnull, or TaskScheduler.Current

Наиболее часто это свойство используется для создания и запуска новой задачи в одном вызове метода 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.

Примечание

Начиная с .NET Framework 4.5.NET Framework 4.5, метод Task.Run предоставляет самый простой способ создания объекта Task со значениями конфигурации по умолчанию.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.

В следующем примере свойство static Factory используется для выполнения двух вызовов метода TaskFactory.StartNew.The following example uses the static Factory property to make two calls to the TaskFactory.StartNew method. Первый заполняет массив именами файлов в каталоге MyDocuments пользователя, а второй заполняет массив именами подкаталогов в каталоге MyDocuments пользователя ().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. Затем он вызывает метод TaskFactory.ContinueWhenAll(Task[], Action<Task[]>), который отображает сведения о количестве файлов и каталогов в двух массивах после завершения выполнения первых двух задач.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

Применяется к

Дополнительно