Task<TResult> コンストラクター

定義

新しい Task<TResult> オブジェクトを初期化します。

オーバーロード

Task<TResult>(Func<TResult>)

指定の関数で新しい Task<TResult> を初期化します。

Task<TResult>(Func<Object,TResult>, Object)

指定の関数と状態で新しい Task<TResult> を初期化します。

Task<TResult>(Func<TResult>, CancellationToken)

指定の関数で新しい Task<TResult> を初期化します。

Task<TResult>(Func<TResult>, TaskCreationOptions)

指定の関数と作成オプションを使用して新しい Task<TResult> を初期化します。

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

指定したアクション、状態、およびオプションで新しい Task<TResult> を初期化します。

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

指定したアクション、状態、およびオプションで新しい Task<TResult> を初期化します。

Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)

指定の関数と作成オプションを使用して新しい Task<TResult> を初期化します。

Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)

指定したアクション、状態、およびオプションで新しい Task<TResult> を初期化します。

Task<TResult>(Func<TResult>)

Source:
Future.cs
Source:
Future.cs
Source:
Future.cs

指定の関数で新しい Task<TResult> を初期化します。

public:
 Task(Func<TResult> ^ function);
public Task (Func<TResult> function);
new System.Threading.Tasks.Task<'Result> : Func<'Result> -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult))

パラメーター

function
Func<TResult>

タスクで実行するコードを表すデリゲート。 関数の実行が完了すると、タスクの Result プロパティが関数の結果値を返すように設定されます。

例外

function 引数が null です。

function 引数が null です。

次の例では、発行された書籍を表すテキスト ファイル内の単語のおおよその数をカウントします。 各タスクは、ファイルを開き、その内容全体を非同期的に読み取り、正規表現を使用して単語数を計算します。 メソッドは Task.WaitAll(Task[]) 、各書籍の単語数をコンソールに表示する前に、すべてのタスクが完了したことを確認するために呼び出されます。

この例では、オブジェクトのインスタンス化はオブジェクトの実行から分離されているため、この例では各ファイルが存在することを確認できます。 そうでない場合は、見つからないファイルの名前が表示されます。 それ以外の場合は、 メソッドを Task.Start 呼び出して各タスクを起動します。

using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

public class Example
{
   public static async Task Main()
   {
      string pattern = @"\p{P}*\s+";
      string[] titles = { "Sister Carrie", "The Financier" };
      Task<int>[] tasks = new Task<int>[titles.Length];

      for (int ctr = 0; ctr < titles.Length; ctr++) {
         string s = titles[ctr];
         tasks[ctr] = new Task<int>( () => {
                                   // Number of words.
                                   int nWords = 0;
                                   // Create filename from title.
                                   string fn = s + ".txt";

                                   StreamReader sr = new StreamReader(fn);
                                   string input = sr.ReadToEndAsync().Result;
                                   sr.Close();
                                   nWords = Regex.Matches(input, pattern).Count;
                                   return nWords;
                                } );
      }
      // Ensure files exist before launching tasks.
      bool allExist = true;
      foreach (var title in titles) {
         string fn = title + ".txt";
         if (! File.Exists(fn)) {
            allExist = false;
            Console.WriteLine("Cannot find '{0}'", fn);
            break;
         }   
      }
      // Launch tasks 
      if (allExist) {
         foreach (var t in tasks)
            t.Start();
      
        await Task.WhenAll(tasks);
  
        Console.WriteLine("Word Counts:\n");
        for (int ctr = 0; ctr < titles.Length; ctr++)
           Console.WriteLine("{0}: {1,10:N0} words", titles[ctr], tasks[ctr].Result);
      }   
   }
}
// The example displays the following output:
//       Sister Carrie:    159,374 words
//       The Financier:    196,362 words
Imports System.IO
Imports System.Text.RegularExpressions
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim pattern As String = "\p{P}*\s+"
      Dim titles() As String = { "Sister Carrie",
                                 "The Financier" }
      Dim tasks(titles.Length - 1) As Task(Of Integer)

      For ctr As Integer = 0 To titles.Length - 1
         Dim s As String = titles(ctr)
         tasks(ctr) = New Task(Of Integer)( Function()
                                   ' Number of words.
                                   Dim nWords As Integer = 0
                                   ' Create filename from title.
                                   Dim fn As String = s + ".txt"

                                   Dim sr As New StreamReader(fn)
                                   Dim input As String = sr.ReadToEndAsync().Result
                                   sr.Close()
                                   nWords = Regex.Matches(input, pattern).Count
                                   Return nWords
                                End Function)
      Next

      ' Ensure files exist before launching tasks.
      Dim allExist As Boolean = True
      For Each title In titles
         Dim fn As String = title + ".txt"
         If Not File.Exists(fn) Then
            allExist = false
            Console.WriteLine("Cannot find '{0}'", fn)
            Exit For
         End If   
      Next
      ' Launch tasks 
      If allExist Then
         For Each t in tasks
            t.Start()
         Next
         Task.WaitAll(tasks)

         Console.WriteLine("Word Counts:")
         Console.WriteLine()
         For ctr As Integer = 0 To titles.Length - 1
         Console.WriteLine("{0}: {1,10:N0} words", titles(ctr), tasks(ctr).Result)
         Next
      End If   
   End Sub
End Module
' The example displays the following output:
'       Sister Carrie:    159,374 words
'       The Financier:    196,362 words

正規表現パターン \p{P}*\s+ は、0、1、または複数の句読点文字の後に 1 つ以上の空白文字と一致します。 一致の合計数がおおよその単語数と等しいことを前提としています。

注釈

このコンストラクターは、タスクの作成と開始を分離する必要がある高度なシナリオでのみ使用する必要があります。

このコンストラクターを呼び出す代わりに、オブジェクトをインスタンス化してタスクを Task<TResult> 起動する最も一般的な方法は、静的 Task.Run<TResult>(Func<TResult>) メソッドと TaskFactory<TResult>.StartNew(Func<TResult>) メソッドを呼び出すことです。

API のコンシューマーが待機するものを持つためだけにアクションのないタスクが必要な場合は、 TaskCompletionSource<TResult> を使用する必要があります。

こちらもご覧ください

適用対象

Task<TResult>(Func<Object,TResult>, Object)

Source:
Future.cs
Source:
Future.cs
Source:
Future.cs

指定の関数と状態で新しい Task<TResult> を初期化します。

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state);
public Task (Func<object,TResult> function, object state);
public Task (Func<object?,TResult> function, object? state);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object)

パラメーター

function
Func<Object,TResult>

タスクで実行するコードを表すデリゲート。 関数の実行が完了すると、タスクの Result プロパティが関数の結果値を返すように設定されます。

state
Object

アクションによって使用されるデータを表すオブジェクト。

例外

function 引数が null です。

function 引数が null です。

注釈

このコンストラクターを呼び出すのではなく、オブジェクトをインスタンス化してタスクを Task<TResult> 起動する最も一般的な方法は、静的 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object) メソッドを呼び出すことです。 このコンストラクターによって提供される唯一の利点は、オブジェクトのインスタンス化をタスク呼び出しから分離できるようにすることです。

こちらもご覧ください

適用対象

Task<TResult>(Func<TResult>, CancellationToken)

Source:
Future.cs
Source:
Future.cs
Source:
Future.cs

指定の関数で新しい Task<TResult> を初期化します。

public:
 Task(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken);
public Task (Func<TResult> function, System.Threading.CancellationToken cancellationToken);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), cancellationToken As CancellationToken)

パラメーター

function
Func<TResult>

タスクで実行するコードを表すデリゲート。 関数の実行が完了すると、タスクの Result プロパティが関数の結果値を返すように設定されます。

cancellationToken
CancellationToken

このタスクに割り当てられる CancellationToken

例外

cancellationToken を作成した CancellationTokenSource は既に破棄されています。

function 引数が null です。

function 引数が null です。

注釈

このコンストラクターを呼び出す代わりに、オブジェクトをインスタンス化してタスクを Task<TResult> 起動する最も一般的な方法は、静的 Task.Run<TResult>(Func<TResult>, CancellationToken) メソッドと TaskFactory<TResult>.StartNew(Func<TResult>, CancellationToken) メソッドを呼び出すことです。 このコンストラクターによって提供される唯一の利点は、オブジェクトのインスタンス化をタスク呼び出しから分離できるようにすることです。

こちらもご覧ください

適用対象

Task<TResult>(Func<TResult>, TaskCreationOptions)

Source:
Future.cs
Source:
Future.cs
Source:
Future.cs

指定の関数と作成オプションを使用して新しい Task<TResult> を初期化します。

public:
 Task(Func<TResult> ^ function, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<TResult> function, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), creationOptions As TaskCreationOptions)

パラメーター

function
Func<TResult>

タスクで実行するコードを表すデリゲート。 関数の実行が完了すると、タスクの Result プロパティが関数の結果値を返すように設定されます。

creationOptions
TaskCreationOptions

タスクの動作のカスタマイズに使用する TaskCreationOptions

例外

creationOptions 引数が、TaskCreationOptions の無効な値を指定しています。

function 引数が null です。

function 引数が null です。

注釈

このコンストラクターを呼び出すのではなく、オブジェクトをインスタンス化してタスクを Task<TResult> 起動する最も一般的な方法は、静的 TaskFactory<TResult>.StartNew(Func<TResult>, TaskCreationOptions) メソッドを呼び出すことです。 このコンストラクターによって提供される唯一の利点は、オブジェクトのインスタンス化をタスク呼び出しから分離できるようにすることです。

こちらもご覧ください

適用対象

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

Source:
Future.cs
Source:
Future.cs
Source:
Future.cs

指定したアクション、状態、およびオプションで新しい Task<TResult> を初期化します。

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::CancellationToken cancellationToken);
public Task (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken);
public Task (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, cancellationToken As CancellationToken)

パラメーター

function
Func<Object,TResult>

タスクで実行するコードを表すデリゲート。 関数の実行が完了すると、タスクの Result プロパティが関数の結果値を返すように設定されます。

state
Object

関数によって使用されるデータを表すオブジェクト。

cancellationToken
CancellationToken

新しいタスクに割り当てられる CancellationToken

例外

cancellationToken を作成した CancellationTokenSource は既に破棄されています。

function 引数が null です。

function 引数が null です。

注釈

このコンストラクターを呼び出すのではなく、オブジェクトをインスタンス化してタスクを Task<TResult> 起動する最も一般的な方法は、静的 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken) メソッドを呼び出すことです。 このコンストラクターによって提供される唯一の利点は、オブジェクトのインスタンス化をタスク呼び出しから分離できるようにすることです。

こちらもご覧ください

適用対象

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

Source:
Future.cs
Source:
Future.cs
Source:
Future.cs

指定したアクション、状態、およびオプションで新しい Task<TResult> を初期化します。

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<object,TResult> function, object state, System.Threading.Tasks.TaskCreationOptions creationOptions);
public Task (Func<object?,TResult> function, object? state, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, creationOptions As TaskCreationOptions)

パラメーター

function
Func<Object,TResult>

タスクで実行するコードを表すデリゲート。 関数の実行が完了すると、タスクの Result プロパティが関数の結果値を返すように設定されます。

state
Object

関数によって使用されるデータを表すオブジェクト。

creationOptions
TaskCreationOptions

タスクの動作のカスタマイズに使用する TaskCreationOptions

例外

creationOptions 引数が、TaskCreationOptions の無効な値を指定しています。

function 引数が null です。

function 引数が null です。

注釈

このコンストラクターを呼び出すのではなく、オブジェクトをインスタンス化してタスクを Task<TResult> 起動する最も一般的な方法は、静的 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, TaskCreationOptions) メソッドを呼び出すことです。 このコンストラクターによって提供される唯一の利点は、オブジェクトのインスタンス化をタスク呼び出しから分離できるようにすることです。

こちらもご覧ください

適用対象

Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)

Source:
Future.cs
Source:
Future.cs
Source:
Future.cs

指定の関数と作成オプションを使用して新しい Task<TResult> を初期化します。

public:
 Task(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<TResult> function, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), cancellationToken As CancellationToken, creationOptions As TaskCreationOptions)

パラメーター

function
Func<TResult>

タスクで実行するコードを表すデリゲート。 関数の実行が完了すると、タスクの Result プロパティが関数の結果値を返すように設定されます。

cancellationToken
CancellationToken

新しいタスクに割り当てられる CancellationToken

creationOptions
TaskCreationOptions

タスクの動作のカスタマイズに使用する TaskCreationOptions

例外

cancellationToken を作成した CancellationTokenSource は既に破棄されています。

creationOptions 引数が、TaskCreationOptions の無効な値を指定しています。

function 引数が null です。

function 引数が null です。

注釈

このコンストラクターを呼び出すのではなく、オブジェクトをインスタンス化してタスクを Task<TResult> 起動する最も一般的な方法は、静的 TaskFactory.StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) メソッドを呼び出すことです。 このコンストラクターによって提供される唯一の利点は、オブジェクトのインスタンス化をタスク呼び出しから分離できるようにすることです。

こちらもご覧ください

適用対象

Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)

Source:
Future.cs
Source:
Future.cs
Source:
Future.cs

指定したアクション、状態、およびオプションで新しい Task<TResult> を初期化します。

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
public Task (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, cancellationToken As CancellationToken, creationOptions As TaskCreationOptions)

パラメーター

function
Func<Object,TResult>

タスクで実行するコードを表すデリゲート。 関数の実行が完了すると、タスクの Result プロパティが関数の結果値を返すように設定されます。

state
Object

関数によって使用されるデータを表すオブジェクト。

cancellationToken
CancellationToken

新しいタスクに割り当てられる CancellationToken

creationOptions
TaskCreationOptions

タスクの動作のカスタマイズに使用する TaskCreationOptions

例外

cancellationToken を作成した CancellationTokenSource は既に破棄されています。

creationOptions 引数が、TaskCreationOptions の無効な値を指定しています。

function 引数が null です。

function 引数が null です。

注釈

このコンストラクターを呼び出すのではなく、オブジェクトをインスタンス化してタスクを Task<TResult> 起動する最も一般的な方法は、静的 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) メソッドを呼び出すことです。 このコンストラクターによって提供される唯一の利点は、オブジェクトのインスタンス化をタスク呼び出しから分離できるようにすることです。

こちらもご覧ください

適用対象