Task.Factory プロパティ

定義

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 メソッドの1回の呼び出しで新しいタスクを作成して開始することです。The most common use of this property is to create and start a new task in a single call to the TaskFactory.StartNew method.

注意

@No__t-0 以降、Task.Run メソッドを使用すると、既定の構成値を持つ @no__t 2 つのオブジェクトを簡単に作成できます。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.

次の例では、静的な Factory プロパティを使用して、TaskFactory.StartNew メソッドを2回呼び出します。The following example uses the static Factory property to make two calls to the TaskFactory.StartNew method. 最初のは、ユーザーのマイドキュメント ディレクトリ内のファイルの名前を配列に格納し、2番目のは配列にユーザーのマイドキュメント ディレクトリのサブディレクトリの名前を設定します。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[]>) メソッドを呼び出します。これにより、最初の2つのタスクの実行が完了した後に、2つの配列内のファイルとディレクトリの数に関する情報が表示されます。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

適用対象

こちらもご覧ください