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>)

ソース:
Future.cs
ソース:
Task_T.cs
ソース:
Future.cs
ソース:
Future.cs
ソース:
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)

ソース:
Future.cs
ソース:
Task_T.cs
ソース:
Future.cs
ソース:
Future.cs
ソース:
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)

ソース:
Future.cs
ソース:
Task_T.cs
ソース:
Future.cs
ソース:
Future.cs
ソース:
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

例外

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

function引数はnull

function引数はnull

注釈

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

こちらもご覧ください

適用対象

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

ソース:
Future.cs
ソース:
Task_T.cs
ソース:
Future.cs
ソース:
Future.cs
ソース:
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)

ソース:
Future.cs
ソース:
Task_T.cs
ソース:
Future.cs
ソース:
Future.cs
ソース:
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

例外

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

function引数はnull

function引数はnull

注釈

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

こちらもご覧ください

適用対象

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

ソース:
Future.cs
ソース:
Task_T.cs
ソース:
Future.cs
ソース:
Future.cs
ソース:
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)

ソース:
Future.cs
ソース:
Task_T.cs
ソース:
Future.cs
ソース:
Future.cs
ソース:
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タスクの動作をカスタマイズするために使用されます。

例外

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

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

function引数はnull

function引数はnull

注釈

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

こちらもご覧ください

適用対象

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

ソース:
Future.cs
ソース:
Task_T.cs
ソース:
Future.cs
ソース:
Future.cs
ソース:
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タスクの動作をカスタマイズするために使用されます。

例外

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

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

function引数はnull

function引数はnull

注釈

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

こちらもご覧ください

適用対象