Task<TResult>.ContinueWith メソッド

定義

別のタスクが完了したときに実行される継続タスクを作成します。Creates a continuation task that executes when another task completes.

オーバーロード

ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

ContinueWith(Action<Task<TResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler)

continuationOptions で指定した条件に従って実行する継続タスクを作成します。Creates a continuation that executes according the condition specified in continuationOptions.

ContinueWith(Action<Task<TResult>,Object>, Object, TaskScheduler)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

ContinueWith(Action<Task<TResult>,Object>, Object, TaskContinuationOptions)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

ContinueWith(Action<Task<TResult>>, TaskContinuationOptions)

continuationOptions で指定した条件に従って実行する継続タスクを作成します。Creates a continuation that executes according the condition specified in continuationOptions.

ContinueWith(Action<Task<TResult>>, CancellationToken)

対象の Task<TResult> の完了時に、非同期的に実行するキャンセル可能な継続タスクを作成します。Creates a cancelable continuation that executes asynchronously when the target Task<TResult> completes.

ContinueWith(Action<Task<TResult>,Object>, Object)

状態の情報を渡される継続と、ターゲット Task<TResult> が完了したときに実行する継続を作成します。Creates a continuation that is passed state information and that executes when the target Task<TResult> completes.

ContinueWith(Action<Task<TResult>>)

対象タスクの完了時に、非同期に実行する継続タスクを作成します。Creates a continuation that executes asynchronously when the target task completes.

ContinueWith(Action<Task<TResult>>, TaskScheduler)

ターゲットの Task<TResult> が完了したときに非同期に実行する継続タスクを作成します。Creates a continuation that executes asynchronously when the target Task<TResult> completes.

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

continuationOptions で指定した条件に従って実行する継続タスクを作成します。Creates a continuation that executes according the condition specified in continuationOptions.

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskScheduler)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskContinuationOptions)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

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

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskContinuationOptions)

continuationOptions で指定した条件に従って実行する継続タスクを作成します。Creates a continuation that executes according the condition specified in continuationOptions.

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

ターゲットの Task<TResult> が完了したときに非同期に実行する継続タスクを作成します。Creates a continuation that executes asynchronously when the target Task<TResult> completes.

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

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>)

ターゲットの Task<TResult> が完了したときに非同期に実行する継続タスクを作成します。Creates a continuation that executes asynchronously when the target Task<TResult> completes.

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskScheduler)

ターゲットの Task<TResult> が完了したときに非同期に実行する継続タスクを作成します。Creates a continuation that executes asynchronously when the target Task<TResult> completes.

ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^, System::Object ^> ^ continuationAction, System::Object ^ state, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task ContinueWith (Action<System.Threading.Tasks.Task<TResult>,object> continuationAction, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>, obj> * obj * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task

パラメーター

continuationAction
Action<Task<TResult>,Object>

Task<TResult> の完了時に実行するアクション。An action to run when the Task<TResult> completes. 実行時に、完了したタスクおよび呼び出し元が提供した状態オブジェクトがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task and the caller-supplied state object as arguments.

state
Object

継続アクションによって使用されるデータを表すオブジェクト。An object representing data to be used by the continuation action.

cancellationToken
CancellationToken

新しい継続タスクに割り当てられる CancellationTokenThe CancellationToken that will be assigned to the new continuation task.

continuationOptions
TaskContinuationOptions

継続タスクのスケジュールおよびその動作を設定するオプション。Options for when the continuation is scheduled and how it behaves. これには、OnlyOnCanceled などの基準および ExecuteSynchronously などの実行オプションが含まれます。This includes criteria, such as OnlyOnCanceled, as well as execution options, such as ExecuteSynchronously.

scheduler
TaskScheduler

継続タスクに関連付け、それを実行するために使用する TaskSchedulerThe TaskScheduler to associate with the continuation task and to use for its execution.

戻り値

新しい継続 TaskA new continuation Task.

例外

scheduler 引数が null です。The scheduler argument is null.

continuationOptions 引数が、TaskContinuationOptions の無効な値を指定しています。The continuationOptions argument specifies an invalid value for TaskContinuationOptions.

指定された CancellationToken は既に破棄されています。The provided CancellationToken has already been disposed.

注釈

返さTaskれるは、現在のタスクが完了するまで実行されるようにスケジュールされません。The returned Task will not be scheduled for execution until the current task has completed. continuationOptionsパラメーターで指定した条件が満たされない場合、継続タスクはスケジュールではなくキャンセルされます。If the criteria specified through the continuationOptions parameter are not met, the continuation task will be canceled instead of scheduled.

こちらもご覧ください

ContinueWith(Action<Task<TResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler)

continuationOptions で指定した条件に従って実行する継続タスクを作成します。Creates a continuation that executes according the condition specified in continuationOptions.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^> ^ continuationAction, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task ContinueWith (Action<System.Threading.Tasks.Task<TResult>> continuationAction, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>> * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task

パラメーター

continuationAction
Action<Task<TResult>>

continuationOptions で指定した条件に従って実行するアクション。An action to run according the condition specified in continuationOptions. 実行すると、完了したタスクがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task as an argument.

cancellationToken
CancellationToken

新しい継続タスクに割り当てられる CancellationTokenThe CancellationToken that will be assigned to the new continuation task.

continuationOptions
TaskContinuationOptions

継続タスクのスケジュールおよびその動作を設定するオプション。Options for when the continuation is scheduled and how it behaves. これには、OnlyOnCanceled などの基準および ExecuteSynchronously などの実行オプションが含まれます。This includes criteria, such as OnlyOnCanceled, as well as execution options, such as ExecuteSynchronously.

scheduler
TaskScheduler

継続タスクに関連付け、それを実行するために使用する TaskSchedulerThe TaskScheduler to associate with the continuation task and to use for its execution.

戻り値

新しい継続 TaskA new continuation Task.

例外

Task<TResult> は破棄されています。The Task<TResult> has been disposed.

- または --or- cancellationToken を作成した CancellationTokenSource は既に破棄されています。The CancellationTokenSource that created cancellationToken has already been disposed.

continuationAction 引数が null です。The continuationAction argument is null.

- または --or- scheduler 引数が null です。The scheduler argument is null.

continuationOptions 引数が、TaskContinuationOptions の無効な値を指定しています。The continuationOptions argument specifies an invalid value for TaskContinuationOptions.

注釈

返さTaskれるは、現在のタスクが完了するまで実行されるようにスケジュールされません。The returned Task will not be scheduled for execution until the current task has completed. continuationOptionsパラメーターで指定した条件が満たされない場合、継続タスクはスケジュールではなくキャンセルされます。If the criteria specified through the continuationOptions parameter are not met, the continuation task will be canceled instead of scheduled. 詳細については、「継続タスクを使用したタスクの連結」を参照してください。For more information, see Chaining Tasks by Using Continuation Tasks.

こちらもご覧ください

ContinueWith(Action<Task<TResult>,Object>, Object, TaskScheduler)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^, System::Object ^> ^ continuationAction, System::Object ^ state, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task ContinueWith (Action<System.Threading.Tasks.Task<TResult>,object> continuationAction, object state, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>, obj> * obj * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult), Object), state As Object, scheduler As TaskScheduler) As Task

パラメーター

continuationAction
Action<Task<TResult>,Object>

Task<TResult> の完了時に実行するアクション。An action to run when the Task<TResult> completes. 実行すると、完了したタスクおよび呼び出し元が指定する状態オブジェクトがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task and the caller-supplied state object as arguments.

state
Object

継続アクションによって使用されるデータを表すオブジェクト。An object representing data to be used by the continuation action.

scheduler
TaskScheduler

継続タスクに関連付け、それを実行するために使用する TaskSchedulerThe TaskScheduler to associate with the continuation task and to use for its execution.

戻り値

新しい継続 TaskA new continuation Task.

例外

scheduler 引数が null です。The scheduler argument is null.

注釈

返さTaskれるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

こちらもご覧ください

ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^, System::Object ^> ^ continuationAction, System::Object ^ state, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task ContinueWith (Action<System.Threading.Tasks.Task<TResult>,object> continuationAction, object state, System.Threading.CancellationToken cancellationToken);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>, obj> * obj * System.Threading.CancellationToken -> System.Threading.Tasks.Task

パラメーター

continuationAction
Action<Task<TResult>,Object>

Task<TResult> の完了時に実行するアクション。An action to run when the Task<TResult> completes. 実行時に、完了したタスクおよび呼び出し元が提供した状態オブジェクトがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task and the caller-supplied state object as arguments.

state
Object

継続アクションによって使用されるデータを表すオブジェクト。An object representing data to be used by the continuation action.

cancellationToken
CancellationToken

新しい継続タスクに割り当てられる CancellationTokenThe CancellationToken that will be assigned to the new continuation task.

戻り値

新しい継続 TaskA new continuation Task.

例外

continuationAction 引数が null です。The continuationAction argument is null.

指定された CancellationToken は既に破棄されています。The provided CancellationToken has already been disposed.

注釈

返さTaskれるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

こちらもご覧ください

ContinueWith(Action<Task<TResult>,Object>, Object, TaskContinuationOptions)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^, System::Object ^> ^ continuationAction, System::Object ^ state, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task ContinueWith (Action<System.Threading.Tasks.Task<TResult>,object> continuationAction, object state, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>, obj> * obj * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult), Object), state As Object, continuationOptions As TaskContinuationOptions) As Task

パラメーター

continuationAction
Action<Task<TResult>,Object>

Task<TResult> の完了時に実行するアクション。An action to run when the Task<TResult> completes. 実行時に、完了したタスクおよび呼び出し元が提供した状態オブジェクトがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task and the caller-supplied state object as arguments.

state
Object

継続アクションによって使用されるデータを表すオブジェクト。An object representing data to be used by the continuation action.

continuationOptions
TaskContinuationOptions

継続タスクのスケジュールおよびその動作を設定するオプション。Options for when the continuation is scheduled and how it behaves. これには、OnlyOnCanceled などの基準および ExecuteSynchronously などの実行オプションが含まれます。This includes criteria, such as OnlyOnCanceled, as well as execution options, such as ExecuteSynchronously.

戻り値

新しい継続 TaskA new continuation Task.

例外

continuationAction 引数が null です。The continuationAction argument is null.

continuationOptions 引数が、TaskContinuationOptions の無効な値を指定しています。The continuationOptions argument specifies an invalid value for TaskContinuationOptions.

注釈

返さTaskれるは、現在のタスクが完了するまで実行されるようにスケジュールされません。The returned Task will not be scheduled for execution until the current task has completed. continuationOptionsパラメーターで指定した継続条件が満たされない場合、継続タスクはスケジュールではなくキャンセルされます。If the continuation criteria specified through the continuationOptions parameter are not met, the continuation task will be canceled instead of scheduled.

こちらもご覧ください

ContinueWith(Action<Task<TResult>>, TaskContinuationOptions)

continuationOptions で指定した条件に従って実行する継続タスクを作成します。Creates a continuation that executes according the condition specified in continuationOptions.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^> ^ continuationAction, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task ContinueWith (Action<System.Threading.Tasks.Task<TResult>> continuationAction, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>> * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult)), continuationOptions As TaskContinuationOptions) As Task

パラメーター

continuationAction
Action<Task<TResult>>

continuationOptions で指定した条件に従って実行するアクション。An action to according the condition specified in continuationOptions. 実行すると、完了したタスクがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task as an argument.

continuationOptions
TaskContinuationOptions

継続タスクのスケジュールおよびその動作を設定するオプション。Options for when the continuation is scheduled and how it behaves. これには、OnlyOnCanceled などの基準および ExecuteSynchronously などの実行オプションが含まれます。This includes criteria, such as OnlyOnCanceled, as well as execution options, such as ExecuteSynchronously.

戻り値

新しい継続 TaskA new continuation Task.

例外

Task<TResult> は破棄されています。The Task<TResult> has been disposed.

continuationAction 引数が null です。The continuationAction argument is null.

continuationOptions 引数が、TaskContinuationOptions の無効な値を指定しています。The continuationOptions argument specifies an invalid value for TaskContinuationOptions.

注釈

返さTaskれるは、現在のタスクが完了するまで実行されるようにスケジュールされません。The returned Task will not be scheduled for execution until the current task has completed. continuationOptionsパラメーターで指定した継続条件が満たされない場合、継続タスクはスケジュールではなくキャンセルされます。If the continuation criteria specified through the continuationOptions parameter are not met, the continuation task will be canceled instead of scheduled.

詳細については、「継続タスクを使用したタスクの連結」を参照してください。For more information, see Chaining Tasks by Using Continuation Tasks.

こちらもご覧ください

ContinueWith(Action<Task<TResult>>, CancellationToken)

対象の Task<TResult> の完了時に、非同期的に実行するキャンセル可能な継続タスクを作成します。Creates a cancelable continuation that executes asynchronously when the target Task<TResult> completes.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^> ^ continuationAction, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task ContinueWith (Action<System.Threading.Tasks.Task<TResult>> continuationAction, System.Threading.CancellationToken cancellationToken);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>> * System.Threading.CancellationToken -> System.Threading.Tasks.Task

パラメーター

continuationAction
Action<Task<TResult>>

Task<TResult> の完了時に実行するアクション。An action to run when the Task<TResult> completes. 実行すると、完了したタスクにデリゲートが引数として渡されます。When run, the delegate is passed the completed task as an argument.

cancellationToken
CancellationToken

新しい継続タスクに渡されるキャンセル トークン。The cancellation token that is passed to the new continuation task.

戻り値

新しい継続タスク。A new continuation task.

例外

Task<TResult> は破棄されています。The Task<TResult> has been disposed.

- または --or- cancellationToken を作成した CancellationTokenSource は破棄されています。The CancellationTokenSource that created cancellationToken has been disposed.

continuationAction 引数が null です。The continuationAction argument is null.

次の例では、ありのエラトステネスを使用して1からユーザーが入力した値までの素数を計算する継続元タスクを作成します。The following example creates an antecedent task that uses the Sieve of Eratosthenes to calculate the prime numbers between 1 and a value entered by the user. 配列は、素数に関する情報を保持するために使用されます。An array is used to hold information about the prime numbers. 配列インデックスは数値を表し、要素の値は、その数値が複合 (値がtrue) または素数 (値がfalse) であるかどうかを示します。The array index represents the number, and the element's value indicates whether that number is composite (its value is true) or prime (its value is false). 次に、このタスクを継続タスクに渡します。これは、整数の配列から素数を抽出して表示する役割を担います。This task is then passed to a continuation task, which is responsible for extracting the prime numbers from the integer array and displaying them.

キャンセルトークンは、継続元と継続タスクの両方に渡されます。A cancellation token is passed to both the antecedent and the continuation task. System.Timers.Timerオブジェクトは、タイムアウト値として100ミリ秒を定義するために使用されます。A System.Timers.Timer object is used to define a timeout value of 100 milliseconds. イベントが発生CancellationTokenSource.Cancelした場合、メソッドが呼び出され、キャンセルトークンを使用してタスクのキャンセルが要求されます。If the event fires, the CancellationTokenSource.Cancel method is called, and the cancellation token is used to request cancellation of the tasks.

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

public class Example
{
   static CancellationTokenSource ts;
   
   public static void Main(string[] args)
   {
      int upperBound = args.Length >= 1 ? Int32.Parse(args[0]) : 200;
      ts = new CancellationTokenSource();
      CancellationToken token = ts.Token;
      Timers.Timer timer = new Timers.Timer(3000);
      timer.Elapsed += TimedOutEvent;
      timer.AutoReset = false;
      timer.Enabled = true;

      var t1 = Task.Run(() => { // True = composite.
                                // False = prime.
                                bool[] values = new bool[upperBound + 1];
                                for (int ctr = 2; ctr <= (int) Math.Sqrt(upperBound); ctr++) {
                                   if (values[ctr] == false) {
                                      for (int product = ctr * ctr; product <= upperBound;
                                                                    product = product + ctr)
                                         values[product] = true;
                                   }
                                   token.ThrowIfCancellationRequested();
                                }
                                return values; }, token);

      var t2 = t1.ContinueWith( (antecedent) => { // Create a list of prime numbers.
                                                  var  primes = new List<int>();
                                                  token.ThrowIfCancellationRequested();
                                                  bool[] numbers = antecedent.Result;
                                                  string output = String.Empty;

                                                  for (int ctr = 1; ctr <= numbers.GetUpperBound(0); ctr++)
                                                     if (numbers[ctr] == false)
                                                        primes.Add(ctr);

                                                  // Create the output string.
                                                  for (int ctr = 0; ctr < primes.Count; ctr++) {
                                                     token.ThrowIfCancellationRequested();
                                                     output += primes[ctr].ToString("N0");
                                                     if (ctr < primes.Count - 1)
                                                        output += ",  ";
                                                     if ((ctr + 1) % 8 == 0)
                                                        output += Environment.NewLine;
                                                  }
                                                  //Display the result.
                                                  Console.WriteLine("Prime numbers from 1 to {0}:\n",
                                                                    upperBound);
                                                  Console.WriteLine(output);
                                                }, token);
      try {
         t2.Wait();
      }
      catch (AggregateException ae) {
         foreach (var e in ae.InnerExceptions) {
            if (e.GetType() == typeof(TaskCanceledException))
               Console.WriteLine("The operation was cancelled.");
            else
               Console.WriteLine("ELSE: {0}: {1}", e.GetType().Name, e.Message);
         }
      }
      finally {
         ts.Dispose();
      }
   }

   private static void TimedOutEvent(Object source, Timers.ElapsedEventArgs e)
   {
      ts.Cancel();
   }
}
// If cancellation is not requested, the example displays output like the following:
//       Prime numbers from 1 to 400:
//
//       1,  2,  3,  5,  7,  11,  13,  17,
//       19,  23,  29,  31,  37,  41,  43,  47,
//       53,  59,  61,  67,  71,  73,  79,  83,
//       89,  97,  101,  103,  107,  109,  113,  127,
//       131,  137,  139,  149,  151,  157,  163,  167,
//       173,  179,  181,  191,  193,  197,  199,  211,
//       223,  227,  229,  233,  239,  241,  251,  257,
//       263,  269,  271,  277,  281,  283,  293,  307,
//       311,  313,  317,  331,  337,  347,  349,  353,
//       359,  367,  373,  379,  383,  389,  397,  401
// If cancellation is requested, the example displays output like the following:
//       The operation was cancelled.
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks
Imports Timers = System.Timers

Module Example
   Dim ts As CancellationTokenSource

   Public Sub Main(args() As String)
      Dim upperBound As Integer = If(args.Length >= 1, CInt(args(0)), 200)
      ts = New CancellationTokenSource()
      Dim token As CancellationToken = ts.Token
      Dim timer As New Timers.Timer(100)
      AddHandler timer.Elapsed, AddressOf TimedOutEvent
      timer.AutoReset = False
      timer.Enabled = True

      Dim t1 = Task.Run(Function()
                          ' True = composite.
                          ' False = prime.
                          Dim values(upperBound) As Boolean
                          For ctr = 2 To CInt(Math.Sqrt(upperBound))
                             If values(ctr) = False Then
                                For product = ctr * ctr To upperBound Step ctr
                                   values(product) = True
                                Next
                             End If
                             token.ThrowIfCancellationRequested()
                          Next
                          Return values
                       End Function, token)

      Dim t2 = t1.ContinueWith(Sub(antecedent)
                                  ' Create a list of prime numbers.
                                  Dim primes As New List(Of Integer)()
                                  token.ThrowIfCancellationRequested()
                                  Dim numbers As Boolean() = antecedent.Result
                                  Dim output As String = String.Empty
                                  
                                  For ctr As Integer = 1 To numbers.GetUpperBound(0)
                                     If numbers(ctr) = False Then primes.Add(ctr)
                                  Next

                                  ' Create the output string.
                                  For ctr As Integer = 0 To primes.Count - 1
                                     token.ThrowIfCancellationRequested()
                                     output += primes(ctr).ToString("N0")
                                     If ctr < primes.Count - 1 Then output += ",  "
                                     If (ctr + 1) Mod 8 = 0 Then output += vbCrLf
                                  Next
                                  'Display the result.
                                  Console.WriteLine("Prime numbers from 1 to {0}:{1}",
                                                    upperBound, vbCrLf)
                                  Console.WriteLine(output)
                               End Sub, token)
      Try
         t2.Wait()
      Catch ae As AggregateException
         For Each e In ae.InnerExceptions
            If e.GetType Is GetType(TaskCanceledException) Then
               Console.WriteLine("The operation was cancelled.")
            Else
               Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message)
            End If
         Next
      Finally
         ts.Dispose()
      End Try
   End Sub
   
   Private Sub TimedOutEvent(source As Object, e As Timers.ElapsedEventArgs)
      ts.Cancel()
   End Sub
End Module
' If cancellation is not requested, the example displays output like the following:
'       Prime numbers from 1 to 400:
'
'       1,  2,  3,  5,  7,  11,  13,  17,
'       19,  23,  29,  31,  37,  41,  43,  47,
'       53,  59,  61,  67,  71,  73,  79,  83,
'       89,  97,  101,  103,  107,  109,  113,  127,
'       131,  137,  139,  149,  151,  157,  163,  167,
'       173,  179,  181,  191,  193,  197,  199,  211,
'       223,  227,  229,  233,  239,  241,  251,  257,
'       263,  269,  271,  277,  281,  283,  293,  307,
'       311,  313,  317,  331,  337,  347,  349,  353,
'       359,  367,  373,  379,  383,  389,  397,  401
' If cancellation is requested, the example displays output like the following:
'       The operation was cancelled.

通常、約10万の値を指定すると、タイムアウト間隔が期限切れTimer.Elapsedになり、イベントが発生し、キャンセル要求が設定されます。Typically, supplying a value of about 100,000 causes the timeout interval to expire and the Timer.Elapsed event to fire, and the cancellation request to be set.

注釈

返さTaskれるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

こちらもご覧ください

ContinueWith(Action<Task<TResult>,Object>, Object)

状態の情報を渡される継続と、ターゲット Task<TResult> が完了したときに実行する継続を作成します。Creates a continuation that is passed state information and that executes when the target Task<TResult> completes.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^, System::Object ^> ^ continuationAction, System::Object ^ state);
public System.Threading.Tasks.Task ContinueWith (Action<System.Threading.Tasks.Task<TResult>,object> continuationAction, object state);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>, obj> * obj -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult), Object), state As Object) As Task

パラメーター

continuationAction
Action<Task<TResult>,Object>

Task<TResult> の完了時に実行するアクション。An action to run when the Task<TResult> completes. 実行すると、完了したタスクおよび呼び出し元が指定する状態オブジェクトが引数としてデリゲートに渡されます。When run, the delegate is passed the completed task and the caller-supplied state object as arguments.

state
Object

継続アクションによって使用されるデータを表すオブジェクト。An object representing data to be used by the continuation action.

戻り値

新しい継続 TaskA new continuation Task.

例外

continuationAction 引数が null です。The continuationAction argument is null.

次の例では、2 ~ 20 の整数を渡すタスクを作成し、その数値の最初の10個の指数 (n1から n10) を含む配列を返します。The following example creates a task that is passed an integer between 2 and 20 and returns an array that contains the first ten exponents (from n1 to n10) of that number. 続いて、継続タスクが指数の表示を行います。A continuation task is then responsible for displaying the exponents. 継続元が生成する指数を持つ元の数値と、継続元の値の両方が渡されます。It is passed both the antecedent and the original number whose exponents the antecedent generates.

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

public class Example
{
   public static void Main()
   {
      var cts = new CancellationTokenSource();
      var token = cts.Token;

      // Get an integer to generate a list of its exponents.
      var rnd = new Random();
      var number = rnd.Next(2, 21);
      
      var t = Task.Factory.StartNew( (value) => { int n = (int) value;
                                                  long[] values = new long[10];
                                                  for (int ctr = 1; ctr <= 10; ctr++)
                                                     values[ctr - 1] = (long) Math.Pow(n, ctr);
                                                     
                                                  return values;
                                                }, number);
      var continuation = t.ContinueWith( (antecedent, value) => { Console.WriteLine("Exponents of {0}:", value);
                                                                  for (int ctr = 0; ctr <= 9; ctr++)
                                                                     Console.WriteLine("   {0} {1} {2} = {3:N0}",
                                                                                       value, "\u02C6", ctr + 1,
                                                                                       antecedent.Result[ctr]);
                                                                  Console.WriteLine();
                                                                }, number);
      continuation.Wait();
      cts.Dispose();
   }
}
// The example displays output like the following:
//       Exponents of 2:
//          2 ^ 1 = 2
//          2 ^ 2 = 4
//          2 ^ 3 = 8
//          2 ^ 4 = 16
//          2 ^ 5 = 32
//          2 ^ 6 = 64
//          2 ^ 7 = 128
//          2 ^ 8 = 256
//          2 ^ 9 = 512
//          2 ^ 10 = 1,024
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim cts As New CancellationTokenSource()
      Dim token As CancellationToken = cts.Token

      ' Get an integer to generate a list of its exponents.
      Dim rnd As New Random()
      Dim number As Integer = rnd.Next(2, 21)

      Dim t = Task.Factory.StartNew( Function(value)
                                        Dim n As Integer = CInt(value)
                                        Dim values(9) As Long
                                        For ctr As Integer = 1 To 10
                                           values(ctr - 1) = CLng(Math.Pow(n, ctr))
                                        Next
                                        return values
                                     End Function, number)
      Dim continuation = t.ContinueWith( Sub(antecedent, value)
                                            Console.WriteLine("Exponents of {0}:", value)
                                            For ctr As Integer = 0 To 9
                                               Console.WriteLine("   {0} {1} {2} = {3:N0}",
                                                                 value, ChrW(&h02C6), ctr + 1,
                                                                 antecedent.Result(ctr))
                                            Next
                                            Console.WriteLine()
                                         End Sub, number)
      continuation.Wait()

      cts.Dispose()
   End Sub
End Module
' The example displays output like the following:
'       Exponents of 2:
'          2 ^ 1 = 2
'          2 ^ 2 = 4
'          2 ^ 3 = 8
'          2 ^ 4 = 16
'          2 ^ 5 = 32
'          2 ^ 6 = 64
'          2 ^ 7 = 128
'          2 ^ 8 = 256
'          2 ^ 9 = 512
'          2 ^ 10 = 1,024

注釈

返さTaskれるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

こちらもご覧ください

ContinueWith(Action<Task<TResult>>)

対象タスクの完了時に、非同期に実行する継続タスクを作成します。Creates a continuation that executes asynchronously when the target task completes.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^> ^ continuationAction);
public System.Threading.Tasks.Task ContinueWith (Action<System.Threading.Tasks.Task<TResult>> continuationAction);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>> -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult))) As Task

パラメーター

continuationAction
Action<Task<TResult>>

先行する Task<TResult> の完了時に実行するアクション。An action to run when the antecedent Task<TResult> completes. 実行すると、完了したタスクがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task as an argument.

戻り値

新しい継続タスク。A new continuation task.

例外

Task<TResult> は破棄されています。The Task<TResult> has been disposed.

continuationAction 引数が null です。The continuationAction argument is null.

次の例では、ありのエラトステネスを使用して1からユーザーが入力した値までの素数を計算する継続元タスクを作成します。The following example creates an antecedent task that uses the Sieve of Eratosthenes to calculate the prime numbers between 1 and a value entered by the user. 配列は、素数に関する情報を保持するために使用されます。An array is used to hold information about the prime numbers. 配列インデックスは数値を表し、要素の値は、その数値が複合 (値がtrue) または素数 (値がfalse) であるかどうかを示します。The array index represents the number, and the element's value indicates whether that number is composite (its value is true) or prime (its value is false). 次に、このタスクを継続タスクに渡します。これは、整数の配列から素数を抽出して表示する役割を担います。This task is then passed to a continuation task, which is responsible for extracting the prime numbers from the integer array and displaying them.

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

public class Example
{
   public static void Main(string[] args)
   {
      int upperBound = args.Length >= 1 ? Int32.Parse(args[0]) : 200;

      var t1 = Task.Run(() => { // True = composite.
                                // False = prime.
                                bool[] values = new bool[upperBound + 1];
                                for (int ctr = 2; ctr <= (int) Math.Sqrt(upperBound); ctr++) {
                                   if (values[ctr] == false) {
                                      for (int product = ctr * ctr; product <= upperBound;
                                                                    product = product + ctr)
                                         values[product] = true;
                                   }
                                }
                                return values; });
      var t2 = t1.ContinueWith( (antecedent) => { // Create a list of prime numbers.
                                                  var  primes = new List<int>();
                                                  bool[] numbers = antecedent.Result;
                                                  string output = String.Empty;

                                                  for (int ctr = 1; ctr <= numbers.GetUpperBound(0); ctr++)
                                                     if (numbers[ctr] == false)
                                                        primes.Add(ctr);

                                                  // Create the output string.
                                                  for (int ctr = 0; ctr < primes.Count; ctr++) {
                                                     output += primes[ctr].ToString("N0");
                                                     if (ctr < primes.Count - 1)
                                                        output += ",  ";
                                                     if ((ctr + 1) % 8 == 0)
                                                        output += Environment.NewLine;
                                                  }
                                                  //Display the result.
                                                  Console.WriteLine("Prime numbers from 1 to {0}:\n",
                                                                    upperBound);
                                                  Console.WriteLine(output);
                                                });
      try {
         t2.Wait();
      }
      catch (AggregateException ae) {
         foreach (var e in ae.InnerExceptions)
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message);
      }
   }
}
// The example displays output like the following:
//       Prime numbers from 1 to 400:
//
//       1,  2,  3,  5,  7,  11,  13,  17,
//       19,  23,  29,  31,  37,  41,  43,  47,
//       53,  59,  61,  67,  71,  73,  79,  83,
//       89,  97,  101,  103,  107,  109,  113,  127,
//       131,  137,  139,  149,  151,  157,  163,  167,
//       173,  179,  181,  191,  193,  197,  199,  211,
//       223,  227,  229,  233,  239,  241,  251,  257,
//       263,  269,  271,  277,  281,  283,  293,  307,
//       311,  313,  317,  331,  337,  347,  349,  353,
//       359,  367,  373,  379,  383,  389,  397,  401
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main(args() As String)
      Dim upperBound As Integer = If(args.Length >= 1, CInt(args(0)), 200)

      Dim t1 = Task.Run(Function()
                          ' True = composite.
                          ' False = prime.
                          Dim values(upperBound) As Boolean
                          For ctr = 2 To CInt(Math.Sqrt(upperBound))
                             If values(ctr) = False Then
                                For product = ctr * ctr To upperBound Step ctr
                                   values(product) = True
                                Next
                             End If
                          Next
                          Return values
                       End Function)

      Dim t2 = t1.ContinueWith(Sub(antecedent)
                                  ' Create a list of prime numbers.
                                  Dim primes As New List(Of Integer)()
                                  Dim numbers As Boolean() = antecedent.Result
                                  Dim output As String = String.Empty
                                  
                                  For ctr As Integer = 1 To numbers.GetUpperBound(0)
                                     If numbers(ctr) = False Then primes.Add(ctr)
                                  Next

                                  ' Create the output string.
                                  For ctr As Integer = 0 To primes.Count - 1
                                     output += primes(ctr).ToString("N0")
                                     If ctr < primes.Count - 1 Then output += ",  "
                                     If (ctr + 1) Mod 8 = 0 Then output += vbCrLf
                                  Next
                                  'Display the result.
                                  Console.WriteLine("Prime numbers from 1 to {0}:{1}",
                                                    upperBound, vbCrLf)
                                  Console.WriteLine(output)
                               End Sub)
      Try
         t2.Wait()
      Catch ae As AggregateException
         For Each e In ae.InnerExceptions
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message)
         Next
      End Try
   End Sub
End Module
' The example displays output like the following:
'       Prime numbers from 1 to 400:
'
'       1,  2,  3,  5,  7,  11,  13,  17,
'       19,  23,  29,  31,  37,  41,  43,  47,
'       53,  59,  61,  67,  71,  73,  79,  83,
'       89,  97,  101,  103,  107,  109,  113,  127,
'       131,  137,  139,  149,  151,  157,  163,  167,
'       173,  179,  181,  191,  193,  197,  199,  211,
'       223,  227,  229,  233,  239,  241,  251,  257,
'       263,  269,  271,  277,  281,  283,  293,  307,
'       311,  313,  317,  331,  337,  347,  349,  353,
'       359,  367,  373,  379,  383,  389,  397,  401
' If cancellation is requested, the example displays output like the following:
'       The operation was cancelled.

注釈

返さTaskれるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したことが原因です。The returned Task will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting early due to being canceled.

こちらもご覧ください

ContinueWith(Action<Task<TResult>>, TaskScheduler)

ターゲットの Task<TResult> が完了したときに非同期に実行する継続タスクを作成します。Creates a continuation that executes asynchronously when the target Task<TResult> completes.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^> ^ continuationAction, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task ContinueWith (Action<System.Threading.Tasks.Task<TResult>> continuationAction, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>> * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult)), scheduler As TaskScheduler) As Task

パラメーター

continuationAction
Action<Task<TResult>>

Task<TResult> の完了時に実行するアクション。An action to run when the Task<TResult> completes. 実行すると、完了したタスクがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task as an argument.

scheduler
TaskScheduler

継続タスクに関連付け、それを実行するために使用する TaskSchedulerThe TaskScheduler to associate with the continuation task and to use for its execution.

戻り値

新しい継続 TaskA new continuation Task.

例外

Task<TResult> は破棄されています。The Task<TResult> has been disposed.

continuationAction 引数が null です。The continuationAction argument is null.

- または --or- scheduler 引数が null です。The scheduler argument is null.

注釈

返さTaskれるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

こちらもご覧ください

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, System::Object ^, TNewResult> ^ continuationFunction, System::Object ^ state, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult> (Func<System.Threading.Tasks.Task<TResult>,object,TNewResult> continuationFunction, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, obj, 'NewResult> * obj * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'NewResult>

型パラメーター

TNewResult

継続タスクによって生成される結果の型。The type of the result produced by the continuation.

パラメーター

continuationFunction
Func<Task<TResult>,Object,TNewResult>

Task<TResult> の完了時に実行する関数。A function to run when the Task<TResult> completes. 実行時に、完了したタスクおよび呼び出し元が提供した状態オブジェクトがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task and the caller-supplied state object as arguments.

state
Object

継続関数によって使用されるデータを表すオブジェクト。An object representing data to be used by the continuation function.

cancellationToken
CancellationToken

新しいタスクに割り当てられる CancellationTokenThe CancellationToken that will be assigned to the new task.

continuationOptions
TaskContinuationOptions

継続タスクのスケジュールおよびその動作を設定するオプション。Options for when the continuation is scheduled and how it behaves. これには、OnlyOnCanceled などの基準および ExecuteSynchronously などの実行オプションが含まれます。This includes criteria, such as OnlyOnCanceled, as well as execution options, such as ExecuteSynchronously.

scheduler
TaskScheduler

継続タスクに関連付け、それを実行するために使用する TaskSchedulerThe TaskScheduler to associate with the continuation task and to use for its execution.

戻り値

Task<TNewResult>

新しい継続 Task<TResult>A new continuation Task<TResult>.

例外

scheduler 引数が null です。The scheduler argument is null.

continuationOptions 引数が、TaskContinuationOptions の無効な値を指定しています。The continuationOptions argument specifies an invalid value for TaskContinuationOptions.

指定された CancellationToken は既に破棄されています。The provided CancellationToken has already been disposed.

注釈

返さTask<TResult>れるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task<TResult> will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

を実行すると、がTask<TResult>返されます。 continuationFunctionThe continuationFunction, when executed, should return a Task<TResult>. このタスクの完了状態は、 Task<TResult>.ContinueWith呼び出しから返されたタスクに転送されます。This task's completion state will be transferred to the task returned from the Task<TResult>.ContinueWith call.

こちらもご覧ください

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

continuationOptions で指定した条件に従って実行する継続タスクを作成します。Creates a continuation that executes according the condition specified in continuationOptions.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, TNewResult> ^ continuationFunction, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult> (Func<System.Threading.Tasks.Task<TResult>,TNewResult> continuationFunction, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, 'NewResult> * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'NewResult>

型パラメーター

TNewResult

継続タスクによって生成される結果の型。The type of the result produced by the continuation.

パラメーター

continuationFunction
Func<Task<TResult>,TNewResult>

continuationOptions で指定した条件に従って実行する関数。A function to run according the condition specified in continuationOptions.

実行すると、この完了したタスクがデリゲートの引数として渡されます。When run, the delegate will be passed as an argument this completed task.

cancellationToken
CancellationToken

新しいタスクに割り当てられる CancellationTokenThe CancellationToken that will be assigned to the new task.

continuationOptions
TaskContinuationOptions

継続タスクのスケジュールおよびその動作を設定するオプション。Options for when the continuation is scheduled and how it behaves. これには、OnlyOnCanceled などの基準および ExecuteSynchronously などの実行オプションが含まれます。This includes criteria, such as OnlyOnCanceled, as well as execution options, such as ExecuteSynchronously.

scheduler
TaskScheduler

継続タスクに関連付け、それを実行するために使用する TaskSchedulerThe TaskScheduler to associate with the continuation task and to use for its execution.

戻り値

Task<TNewResult>

新しい継続 Task<TResult>A new continuation Task<TResult>.

例外

Task<TResult> は破棄されています。The Task<TResult> has been disposed.

- または --or- cancellationToken を作成した CancellationTokenSource は既に破棄されています。The CancellationTokenSource that created cancellationToken has already been disposed.

continuationFunction 引数が null です。The continuationFunction argument is null.

- または --or- scheduler 引数が null です。The scheduler argument is null.

continuationOptions 引数が、TaskContinuationOptions の無効な値を指定しています。The continuationOptions argument specifies an invalid value for TaskContinuationOptions.

注釈

返さTask<TResult>れるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task<TResult> will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

を実行すると、がTask<TResult>返されます。 continuationFunctionThe continuationFunction, when executed, should return a Task<TResult>.

こちらもご覧ください

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskScheduler)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, System::Object ^, TNewResult> ^ continuationFunction, System::Object ^ state, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult> (Func<System.Threading.Tasks.Task<TResult>,object,TNewResult> continuationFunction, object state, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, obj, 'NewResult> * obj * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), Object, TNewResult), state As Object, scheduler As TaskScheduler) As Task(Of TNewResult)

型パラメーター

TNewResult

継続タスクによって生成される結果の型。The type of the result produced by the continuation.

パラメーター

continuationFunction
Func<Task<TResult>,Object,TNewResult>

Task<TResult> の完了時に実行する関数。A function to run when the Task<TResult> completes. 実行すると、完了したタスクおよび呼び出し元が指定する状態オブジェクトがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task and the caller-supplied state object as arguments.

state
Object

継続関数によって使用されるデータを表すオブジェクト。An object representing data to be used by the continuation function.

scheduler
TaskScheduler

継続タスクに関連付け、それを実行するために使用する TaskSchedulerThe TaskScheduler to associate with the continuation task and to use for its execution.

戻り値

Task<TNewResult>

新しい継続 Task<TResult>A new continuation Task<TResult>.

例外

scheduler 引数が null です。The scheduler argument is null.

注釈

返さTask<TResult>れるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task<TResult> will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

こちらもご覧ください

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskContinuationOptions)

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, System::Object ^, TNewResult> ^ continuationFunction, System::Object ^ state, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult> (Func<System.Threading.Tasks.Task<TResult>,object,TNewResult> continuationFunction, object state, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, obj, 'NewResult> * obj * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), Object, TNewResult), state As Object, continuationOptions As TaskContinuationOptions) As Task(Of TNewResult)

型パラメーター

TNewResult

継続タスクによって生成される結果の型。The type of the result produced by the continuation.

パラメーター

continuationFunction
Func<Task<TResult>,Object,TNewResult>

Task<TResult> の完了時に実行する関数。A function to run when the Task<TResult> completes. 実行時に、完了したタスクおよび呼び出し元が提供した状態オブジェクトがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task and the caller-supplied state object as arguments.

state
Object

継続関数によって使用されるデータを表すオブジェクト。An object representing data to be used by the continuation function.

continuationOptions
TaskContinuationOptions

継続タスクのスケジュールおよびその動作を設定するオプション。Options for when the continuation is scheduled and how it behaves. これには、OnlyOnCanceled などの基準および ExecuteSynchronously などの実行オプションが含まれます。This includes criteria, such as OnlyOnCanceled, as well as execution options, such as ExecuteSynchronously.

戻り値

Task<TNewResult>

新しい継続 Task<TResult>A new continuation Task<TResult>.

例外

continuationFunction 引数が null です。The continuationFunction argument is null.

continuationOptions 引数が、TaskContinuationOptions の無効な値を指定しています。The continuationOptions argument specifies an invalid value for TaskContinuationOptions.

注釈

返さTask<TResult>れるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task<TResult> will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

を実行すると、がTask<TResult>返されます。 continuationFunctionThe continuationFunction, when executed, should return a Task<TResult>. このタスクの完了状態は、System.threading.tasks.task.continuewith 呼び出しから返されたタスクに転送されます。This task's completion state will be transferred to the task returned from the ContinueWith call.

こちらもご覧ください

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

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, System::Object ^, TNewResult> ^ continuationFunction, System::Object ^ state, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult> (Func<System.Threading.Tasks.Task<TResult>,object,TNewResult> continuationFunction, object state, System.Threading.CancellationToken cancellationToken);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, obj, 'NewResult> * obj * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'NewResult>

型パラメーター

TNewResult

継続タスクによって生成される結果の型。The type of the result produced by the continuation.

パラメーター

continuationFunction
Func<Task<TResult>,Object,TNewResult>

Task<TResult> の完了時に実行する関数。A function to run when the Task<TResult> completes. 実行すると、完了したタスクおよび呼び出し元が指定する状態オブジェクトがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task and the caller-supplied state object as arguments.

state
Object

継続関数によって使用されるデータを表すオブジェクト。An object representing data to be used by the continuation function.

cancellationToken
CancellationToken

新しいタスクに割り当てられる CancellationTokenThe CancellationToken that will be assigned to the new task.

戻り値

Task<TNewResult>

新しい継続 Task<TResult>A new continuation Task<TResult>.

例外

continuationFunction 引数が null です。The continuationFunction argument is null.

指定された CancellationToken は既に破棄されています。The provided CancellationToken has already been disposed.

注釈

返さTask<TResult>れるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task<TResult> will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

こちらもご覧ください

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskContinuationOptions)

continuationOptions で指定した条件に従って実行する継続タスクを作成します。Creates a continuation that executes according the condition specified in continuationOptions.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, TNewResult> ^ continuationFunction, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult> (Func<System.Threading.Tasks.Task<TResult>,TNewResult> continuationFunction, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, 'NewResult> * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), TNewResult), continuationOptions As TaskContinuationOptions) As Task(Of TNewResult)

型パラメーター

TNewResult

継続タスクによって生成される結果の型。The type of the result produced by the continuation.

パラメーター

continuationFunction
Func<Task<TResult>,TNewResult>

continuationOptions で指定した条件に従って実行する関数。A function to run according the condition specified in continuationOptions.

実行すると、完了したタスクがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task as an argument.

continuationOptions
TaskContinuationOptions

継続タスクのスケジュールおよびその動作を設定するオプション。Options for when the continuation is scheduled and how it behaves. これには、OnlyOnCanceled などの基準および ExecuteSynchronously などの実行オプションが含まれます。This includes criteria, such as OnlyOnCanceled, as well as execution options, such as ExecuteSynchronously.

戻り値

Task<TNewResult>

新しい継続 Task<TResult>A new continuation Task<TResult>.

例外

Task<TResult> は破棄されています。The Task<TResult> has been disposed.

continuationFunction 引数が null です。The continuationFunction argument is null.

continuationOptions 引数が、TaskContinuationOptions の無効な値を指定しています。The continuationOptions argument specifies an invalid value for TaskContinuationOptions.

注釈

返さTask<TResult>れるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task<TResult> will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

を実行すると、がTask<TResult>返されます。 continuationFunctionThe continuationFunction, when executed, should return a Task<TResult>.

こちらもご覧ください

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

ターゲットの Task<TResult> が完了したときに非同期に実行する継続タスクを作成します。Creates a continuation that executes asynchronously when the target Task<TResult> completes.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, TNewResult> ^ continuationFunction, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult> (Func<System.Threading.Tasks.Task<TResult>,TNewResult> continuationFunction, System.Threading.CancellationToken cancellationToken);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, 'NewResult> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'NewResult>

型パラメーター

TNewResult

継続タスクによって生成される結果の型。The type of the result produced by the continuation.

パラメーター

continuationFunction
Func<Task<TResult>,TNewResult>

Task<TResult> の完了時に実行する関数。A function to run when the Task<TResult> completes. 実行すると、完了したタスクがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task as an argument.

cancellationToken
CancellationToken

新しいタスクに割り当てられる CancellationTokenThe CancellationToken that will be assigned to the new task.

戻り値

Task<TNewResult>

新しい継続 Task<TResult>A new continuation Task<TResult>.

例外

Task<TResult> は破棄されています。The Task<TResult> has been disposed.

- または --or- cancellationToken を作成した CancellationTokenSource は既に破棄されています。The CancellationTokenSource that created cancellationToken has already been disposed.

continuationFunction 引数が null です。The continuationFunction argument is null.

注釈

返さTask<TResult>れるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task<TResult> will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

こちらもご覧ください

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

ターゲットの Task<TResult> が完了したときに実行する継続タスクを作成します。Creates a continuation that executes when the target Task<TResult> completes.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, System::Object ^, TNewResult> ^ continuationFunction, System::Object ^ state);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult> (Func<System.Threading.Tasks.Task<TResult>,object,TNewResult> continuationFunction, object state);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, obj, 'NewResult> * obj -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), Object, TNewResult), state As Object) As Task(Of TNewResult)

型パラメーター

TNewResult

継続タスクによって生成される結果の型。The type of the result produced by the continuation.

パラメーター

continuationFunction
Func<Task<TResult>,Object,TNewResult>

Task<TResult> の完了時に実行する関数。A function to run when the Task<TResult> completes. 実行すると、完了したタスクおよび呼び出し元が指定する状態オブジェクトがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task and the caller-supplied state object as arguments.

state
Object

継続関数によって使用されるデータを表すオブジェクト。An object representing data to be used by the continuation function.

戻り値

Task<TNewResult>

新しい継続 Task<TResult>A new continuation Task<TResult>.

例外

continuationFunction 引数が null です。The continuationFunction argument is null.

次の例では、継続タスクのチェーンを作成します。The following example creates a chain of continuation tasks. 各タスクは、 DateTime ContinueWith(Action<Task,Object>, Object)メソッドの state 引数の現在の時刻 (オブジェクト) を提供します。Each task provides the current time, a DateTime object, for the state argument of the ContinueWith(Action<Task,Object>, Object) method. DateTime値は、continue タスクが作成された時刻を表します。Each DateTime value represents the time at which the continue task is created. 各タスクは、結果としてDateTime 、タスクが終了する時刻を表す2番目の値を生成します。Each task produces as its result a second DateTime value that represents the time at which the task finishes. すべてのタスクが完了した後、この例では、各継続タスクが開始および終了する日付と時刻が表示されます。After all tasks finish, the example displays the date and times at which each continuation task starts and finishes.

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

// Demonstrates how to associate state with task continuations.
class ContinuationState
{
   // Simluates a lengthy operation and returns the time at which
   // the operation completed.
   public static DateTime DoWork()
   {
      // Simulate work by suspending the current thread 
      // for two seconds.
      Thread.Sleep(2000);

      // Return the current time.
      return DateTime.Now;
   }

   static void Main(string[] args)
   {
      // Start a root task that performs work.
      Task<DateTime> t = Task<DateTime>.Run(delegate { return DoWork(); });

      // Create a chain of continuation tasks, where each task is 
      // followed by another task that performs work.
      List<Task<DateTime>> continuations = new List<Task<DateTime>>();
      for (int i = 0; i < 5; i++)
      {
         // Provide the current time as the state of the continuation.
         t = t.ContinueWith(delegate { return DoWork(); }, DateTime.Now);
         continuations.Add(t);
      }

      // Wait for the last task in the chain to complete.
      t.Wait();

      // Print the creation time of each continuation (the state object)
      // and the completion time (the result of that task) to the console.
      foreach (var continuation in continuations)
      {
         DateTime start = (DateTime)continuation.AsyncState;
         DateTime end = continuation.Result;

         Console.WriteLine("Task was created at {0} and finished at {1}.",
            start.TimeOfDay, end.TimeOfDay);
      }
   }
}

/* Sample output:
Task was created at 10:56:21.1561762 and finished at 10:56:25.1672062.
Task was created at 10:56:21.1610677 and finished at 10:56:27.1707646.
Task was created at 10:56:21.1610677 and finished at 10:56:29.1743230.
Task was created at 10:56:21.1610677 and finished at 10:56:31.1779883.
Task was created at 10:56:21.1610677 and finished at 10:56:33.1837083.
*/
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks

' Demonstrates how to associate state with task continuations.
Public Module ContinuationState
   ' Simluates a lengthy operation and returns the time at which
   ' the operation completed.
   Public Function DoWork() As Date
      ' Simulate work by suspending the current thread 
      ' for two seconds.
      Thread.Sleep(2000)

      ' Return the current time.
      Return Date.Now
   End Function

   Public Sub Main()
      ' Start a root task that performs work.
      Dim t As Task(Of Date) = Task(Of Date).Run(Function() DoWork())

      ' Create a chain of continuation tasks, where each task is
      ' followed by another task that performs work.
      Dim continuations As New List(Of Task(Of DateTime))()
      For i As Integer = 0 To 4
         ' Provide the current time as the state of the continuation.
         t = t.ContinueWith(Function(antecedent, state) DoWork(), DateTime.Now)
         continuations.Add(t)
      Next

      ' Wait for the last task in the chain to complete.
      t.Wait()

      ' Display the creation time of each continuation (the state object)
      ' and the completion time (the result of that task) to the console.
      For Each continuation In continuations
         Dim start As DateTime = CDate(continuation.AsyncState)
         Dim [end] As DateTime = continuation.Result

         Console.WriteLine("Task was created at {0} and finished at {1}.",
            start.TimeOfDay, [end].TimeOfDay)
      Next
   End Sub
End Module
' The example displays output like the following:
'       Task was created at 10:56:21.1561762 and finished at 10:56:25.1672062.
'       Task was created at 10:56:21.1610677 and finished at 10:56:27.1707646.
'       Task was created at 10:56:21.1610677 and finished at 10:56:29.1743230.
'       Task was created at 10:56:21.1610677 and finished at 10:56:31.1779883.
'       Task was created at 10:56:21.1610677 and finished at 10:56:33.1837083.

注釈

返さTask<TResult>れるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task<TResult> will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

こちらもご覧ください

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>)

ターゲットの Task<TResult> が完了したときに非同期に実行する継続タスクを作成します。Creates a continuation that executes asynchronously when the target Task<TResult> completes.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, TNewResult> ^ continuationFunction);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult> (Func<System.Threading.Tasks.Task<TResult>,TNewResult> continuationFunction);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, 'NewResult> -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), TNewResult)) As Task(Of TNewResult)

型パラメーター

TNewResult

継続タスクによって生成される結果の型。The type of the result produced by the continuation.

パラメーター

continuationFunction
Func<Task<TResult>,TNewResult>

Task<TResult> の完了時に実行する関数。A function to run when the Task<TResult> completes. 実行すると、完了したタスクがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task as an argument.

戻り値

Task<TNewResult>

新しい継続 Task<TResult>A new continuation Task<TResult>.

例外

Task<TResult> は破棄されています。The Task<TResult> has been disposed.

continuationFunction 引数が null です。The continuationFunction argument is null.

注釈

返さTask<TResult>れるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task<TResult> will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

こちらもご覧ください

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskScheduler)

ターゲットの Task<TResult> が完了したときに非同期に実行する継続タスクを作成します。Creates a continuation that executes asynchronously when the target Task<TResult> completes.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, TNewResult> ^ continuationFunction, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult> (Func<System.Threading.Tasks.Task<TResult>,TNewResult> continuationFunction, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, 'NewResult> * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), TNewResult), scheduler As TaskScheduler) As Task(Of TNewResult)

型パラメーター

TNewResult

継続タスクによって生成される結果の型。The type of the result produced by the continuation.

パラメーター

continuationFunction
Func<Task<TResult>,TNewResult>

Task<TResult> の完了時に実行する関数。A function to run when the Task<TResult> completes. 実行すると、完了したタスクがデリゲートの引数として渡されます。When run, the delegate will be passed the completed task as an argument.

scheduler
TaskScheduler

継続タスクに関連付け、それを実行するために使用する TaskSchedulerThe TaskScheduler to associate with the continuation task and to use for its execution.

戻り値

Task<TNewResult>

新しい継続 Task<TResult>A new continuation Task<TResult>.

例外

Task<TResult> は破棄されています。The Task<TResult> has been disposed.

continuationFunction 引数が null です。The continuationFunction argument is null.

- または --or- scheduler 引数が null です。The scheduler argument is null.

注釈

返さTask<TResult>れるは、現在のタスクが完了するまで実行されるようにスケジュールされません。実行が正常に完了したか、未処理の例外が原因でエラーが発生したか、または取り消されたため早期に終了したかのいずれかになります。The returned Task<TResult> will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

こちらもご覧ください

適用対象