TaskFactory<TResult> クラス

定義

Task<TResult> オブジェクトを作成およびスケジュールするためのサポートを提供します。Provides support for creating and scheduling Task<TResult> objects.

generic <typename TResult>
public ref class TaskFactory
public class TaskFactory<TResult>
type TaskFactory<'Result> = class
Public Class TaskFactory(Of TResult)

型パラメーター

TResult

このクラスのメソッドによって作成される Task<TResult> オブジェクトの戻り値。The return value of the Task<TResult> objects that the methods of this class create.

継承
TaskFactory<TResult>

次のコードの例では、静的なFactoryプロパティを 2 つの呼び出しを行う、TaskFactory<TResult>.StartNewメソッド。The following example uses the static Factory property to make two calls to the TaskFactory<TResult>.StartNew method. 最初のタスクでは、2 つ目は、ユーザーのマイ ドキュメント ディレクトリのサブディレクトリの名前が設定された文字列配列を返します、ユーザーの [マイ ドキュメント] のディレクトリ内のファイル名が設定された文字列配列を返します。The first task returns a string array that is populated with the names of files in the user's MyDocuments directory, while the second returns a string array that is populated with the names of subdirectories of the user's MyDocuments directory. 呼び出して、TaskFactory.ContinueWhenAll(Task[], Action<Task[]>)メソッドで、実行が完了した後、2 つのタスクによって返される配列内のファイルとディレクトリの数に関する情報を表示します。It then calls the TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) method, which displays information about the number of files and directories in the arrays returned by the two tasks after they have completed execution.

using System;
using System.IO;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task<string[]>[] tasks = new Task<string[]>[2];
      String docsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

      tasks[0] = Task<string[]>.Factory.StartNew( () => Directory.GetFiles(docsDirectory));
      tasks[1] = Task<string[]>.Factory.StartNew( () => Directory.GetDirectories(docsDirectory));

      Task.Factory.ContinueWhenAll(tasks, completedTasks => {
                                             Console.WriteLine("{0} contains: ", docsDirectory);
                                             Console.WriteLine("   {0} subdirectories", tasks[1].Result.Length);
                                             Console.WriteLine("   {0} files", tasks[0].Result.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(Of String())
      Dim docsDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
      
      tasks(0) = Task(Of String()).Factory.StartNew( Function()Directory.GetFiles(docsDirectory) )
''                                        End Sub )
      tasks(1) = Task(Of String()).Factory.StartNew( Function() Directory.GetDirectories(docsDirectory) )
''                                        End Sub )
      Task.Factory.ContinueWhenAll(tasks, Sub(completedTasks)
                                             Console.WriteLine("{0} contains: ", docsDirectory)
                                             Console.WriteLine("   {0} subdirectories", tasks(1).Result.Length)
                                             Console.WriteLine("   {0} files", tasks(0).Result.Length)
                                          End Sub)
   End Sub
End Module
' The example displays output like the following:
'       C:\Users\<username>\Documents contains:
'          24 subdirectories
'          16 files

注釈

.NET Framework では、2 つのファクトリの作成とタスクのスケジュールを提供します。The .NET Framework provides two factories for creating and scheduling tasks:

TaskFactory<TResult>クラスは、次を行うことができます。The TaskFactory<TResult> class allows you to do the following:

  • タスクを作成しを呼び出してすぐに開始、StartNewメソッド。Create a task and start it immediately by calling the StartNew method. 作成して既定以外の引数を必要とするタスクを実行するには、このメソッドのオーバー ロードを呼び出すことができます。You can call the overloads of this method to create and execute a task that requires non-default arguments.

    警告

    以降では、 .NET Framework 4.5.NET Framework 4.5Task.Runメソッドを構成値、既定値はタスクを作成してすぐに開始する最も簡単な方法を提供します。Starting with the .NET Framework 4.5.NET Framework 4.5, the Task.Run method provides the easiest way to create a task with default configuration values and start it immediately.

  • 呼び出すことによって、配列内のタスクのいずれかが完了したときに起動するタスクを作成、ContinueWhenAnyまたはContinueWhenAnyメソッド。Create a task that starts when any one of the tasks in an array has completed by calling the ContinueWhenAny or ContinueWhenAny method.

  • 呼び出すことによって、配列内のすべてのタスクが完了したときに起動するタスクを作成、ContinueWhenAllまたはContinueWhenAllメソッド。Create a task that starts when all the tasks in an array have completed by calling the ContinueWhenAll or ContinueWhenAll method.

静的なTask<TResult>.Factoryプロパティは、既定値を返しますTaskFactory<TResult>オブジェクト。The static Task<TResult>.Factory property returns a default TaskFactory<TResult> object. いずれかを呼び出すことができます、TaskFactory<TResult>クラスのコンス トラクターを構成する、Task<TResult>オブジェクトをTaskFactory<TResult>クラスを作成します。You can also call one of the TaskFactory<TResult> class constructors to configure the Task<TResult> objects that the TaskFactory<TResult> class creates. 次の例では、新しいTaskFactory<TResult>が指定されたキャンセル トークン、タスク作成オプション、継続のオプション、およびカスタマイズされたタスク スケジューラのタスクを作成するオブジェクト。The following example configures a new TaskFactory<TResult> object to create tasks that have a specified cancellation token, task creation options, continuation options, and a customized task scheduler.

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   static CancellationTokenSource cts = new CancellationTokenSource();

   static TaskFactory<int> factory = new TaskFactory<int>(
      cts.Token,
      TaskCreationOptions.PreferFairness,
      TaskContinuationOptions.ExecuteSynchronously,
      new CustomScheduler());

   static void Main()
   {
      var t2 = factory.StartNew(() => DoWork());
      cts.Dispose();
   }

   static int DoWork()
   {
       /*...*/
       return DateTime.Now.Hour <= 12 ?  1 : 2;
    }
}
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(Of Integer)(
                         cts.Token,
                         TaskCreationOptions.PreferFairness,
                         TaskContinuationOptions.ExecuteSynchronously,
                         New CustomScheduler())

      Dim t2 = factory.StartNew(Function() DoWork())
      cts.Dispose()
   End Sub

   Function DoWork() As Integer
      Return If(Date.Now.Hour <= 12, 1, 2)
   End Function
End Module

ほとんどの場合は、新しいインスタンスを作成する必要はありませんTaskFactory<TResult>インスタンス。In most cases, you do not have to instantiate a new TaskFactory<TResult> instance. 静的なを使用する代わりに、Task<TResult>.Factoryプロパティで、既定値を使用するファクトリ オブジェクトを返します。Instead, you can use the static Task<TResult>.Factory property, which returns a factory object that uses default values. 新しいタスクを開始またはタスクの継続を定義するメソッドを呼び出すことができます。You can then call its methods to start new tasks or define task continuations. 例については、例を参照してください。For an illustration, see the example.

コンストラクター

TaskFactory<TResult>()

既定の構成を使用して、TaskFactory<TResult> インスタンスを初期化します。Initializes a TaskFactory<TResult> instance with the default configuration.

TaskFactory<TResult>(CancellationToken)

既定の構成を使用して、TaskFactory<TResult> インスタンスを初期化します。Initializes a TaskFactory<TResult> instance with the default configuration.

TaskFactory<TResult>(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler)

指定された構成を使用して、TaskFactory<TResult> インスタンスを初期化します。Initializes a TaskFactory<TResult> instance with the specified configuration.

TaskFactory<TResult>(TaskCreationOptions, TaskContinuationOptions)

指定された構成を使用して、TaskFactory<TResult> インスタンスを初期化します。Initializes a TaskFactory<TResult> instance with the specified configuration.

TaskFactory<TResult>(TaskScheduler)

指定された構成を使用して、TaskFactory<TResult> インスタンスを初期化します。Initializes a TaskFactory<TResult> instance with the specified configuration.

プロパティ

CancellationToken

このタスク ファクトリの既定のキャンセル トークンを取得します。Gets the default cancellation token for this task factory.

ContinuationOptions

このタスク ファクトリの TaskContinuationOptions 列挙値を取得します。Gets the TaskContinuationOptions enumeration value for this task factory.

CreationOptions

このタスク ファクトリの TaskCreationOptions 列挙値を取得します。Gets the TaskCreationOptions enumeration value for this task factory.

Scheduler

このタスク ファクトリのタスク スケジューラーを取得します。Gets the task scheduler for this task factory.

メソッド

ContinueWhenAll(Task[], Func<Task[],TResult>)

指定された一連のタスクの完了時に開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken)

指定された一連のタスクの完了時に開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

指定された一連のタスクの完了時に開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of a set of provided Tasks.

ContinueWhenAll(Task[], Func<Task[],TResult>, TaskContinuationOptions)

指定された一連のタスクの完了時に開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of a set of provided Tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>)

指定された一連のタスクの完了時に開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken)

指定された一連のタスクの完了時に開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

指定された一連のタスクの完了時に開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, TaskContinuationOptions)

指定された一連のタスクの完了時に開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAny(Task[], Func<Task,TResult>)

指定された一連のタスクのうち任意のタスクが完了したときに開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken)

指定された一連のタスクのうち任意のタスクが完了したときに開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

指定された一連のタスクのうち任意のタスクが完了したときに開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny(Task[], Func<Task,TResult>, TaskContinuationOptions)

指定された一連のタスクのうち任意のタスクが完了したときに開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>)

指定された一連のタスクのうち任意のタスクが完了したときに開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken)

指定された一連のタスクのうち任意のタスクが完了したときに開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

指定された一連のタスクのうち任意のタスクが完了したときに開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, TaskContinuationOptions)

指定された一連のタスクのうち任意のタスクが完了したときに開始される継続タスクを作成します。Creates a continuation task that will be started upon the completion of any task in the provided set.

Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(継承元 Object)
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object)

非同期プログラミング モデルのパターンに準拠した開始メソッドと終了メソッドの組み合わせを表すタスクを作成します。Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object, TaskCreationOptions)

非同期プログラミング モデルのパターンに準拠した開始メソッドと終了メソッドの組み合わせを表すタスクを作成します。Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>)

指定された IAsyncResult の完了時に終了メソッド関数を実行するタスクを作成します。Creates a task that executes an end method function when a specified IAsyncResult completes.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions)

指定された IAsyncResult の完了時に終了メソッド関数を実行するタスクを作成します。Creates a task that executes an end method function when a specified IAsyncResult completes.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions, TaskScheduler)

指定された IAsyncResult の完了時に終了メソッド関数を実行するタスクを作成します。Creates a task that executes an end method function when a specified IAsyncResult completes.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object)

非同期プログラミング モデルのパターンに準拠した開始メソッドと終了メソッドの組み合わせを表すタスクを作成します。Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions)

非同期プログラミング モデルのパターンに準拠した開始メソッドと終了メソッドの組み合わせを表すタスクを作成します。Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object)

非同期プログラミング モデルのパターンに準拠した開始メソッドと終了メソッドの組み合わせを表すタスクを作成します。Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object, TaskCreationOptions)

非同期プログラミング モデルのパターンに準拠した開始メソッドと終了メソッドの組み合わせを表すタスクを作成します。Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object)

非同期プログラミング モデルのパターンに準拠した開始メソッドと終了メソッドの組み合わせを表すタスクを作成します。Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object, TaskCreationOptions)

非同期プログラミング モデルのパターンに準拠した開始メソッドと終了メソッドの組み合わせを表すタスクを作成します。Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
StartNew(Func<Object,TResult>, Object)

タスクを作成して開始します。Creates and starts a task.

StartNew(Func<Object,TResult>, Object, CancellationToken)

タスクを作成して開始します。Creates and starts a task.

StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

タスクを作成して開始します。Creates and starts a task.

StartNew(Func<Object,TResult>, Object, TaskCreationOptions)

タスクを作成して開始します。Creates and starts a task.

StartNew(Func<TResult>)

タスクを作成して開始します。Creates and starts a task.

StartNew(Func<TResult>, CancellationToken)

タスクを作成して開始します。Creates and starts a task.

StartNew(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler)

タスクを作成して開始します。Creates and starts a task.

StartNew(Func<TResult>, TaskCreationOptions)

タスクを作成して開始します。Creates and starts a task.

ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)

適用対象

スレッド セーフ

すべてのパブリックおよびプロテクト メンバーTaskFactory<TResult>スレッド セーフでは、複数のスレッドから同時に使用される可能性があります。All public and protected members of TaskFactory<TResult> are thread-safe and may be used concurrently from multiple threads.

こちらもご覧ください