TaskContinuationOptions 列挙型

定義

ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) メソッドまたは ContinueWith(Action<Task<TResult>>, TaskContinuationOptions) メソッドを使用して作成されるタスクの動作を指定します。

この列挙体は、メンバー値のビットごとの組み合わせをサポートしています。

public enum class TaskContinuationOptions
[System.Flags]
public enum TaskContinuationOptions
[System.Flags]
[System.Serializable]
public enum TaskContinuationOptions
[<System.Flags>]
type TaskContinuationOptions = 
[<System.Flags>]
[<System.Serializable>]
type TaskContinuationOptions = 
Public Enum TaskContinuationOptions
継承
TaskContinuationOptions
属性

フィールド

AttachedToParent 4

継続が子タスクの場合は、タスク階層内の親にアタッチするように指定します。 継続元も子タスクである場合にのみ、継続は子タスクになれます。 既定では、子タスク (外側のタスクによって作成される内側のタスク) は、親と独立して実行されます。 AttachedToParent オプションを使用して、親タスクと子タスクを同期させることもできます。

親タスクが DenyChildAttach オプションを指定して構成されている場合、子タスクの AttachedToParent オプションは無効で、その子タスクはデタッチされた子タスクとして実行されることに注意してください。

詳細については、「アタッチされた子タスクとデタッチされた子タスク」を参照してください。

DenyChildAttach 8

AttachedToParent オプションを指定して作成され、アタッチされた子タスクとして実行されることを試行する子タスク (この継続によって作成される入れ子になった内側のタスク) は、親タスクにアタッチされることはできないため、デタッチされた子タスクとして実行されます。 詳細については、「アタッチされた子タスクとデタッチされた子タスク」を参照してください。

ExecuteSynchronously 524288

継続タスクを同期的に実行するように指定します。 このオプションを指定すると、継続は、前のタスクを最終状態に遷移させた同じスレッドで実行されます。 継続の作成時に継続元が既に完了している場合、継続はその継続を作成したスレッドで実行されます。 継続元の CancellationTokenSourcefinally ブロック (Visual Basic では Finally) で破棄された場合、このオプションを指定した継続がその finally ブロックで実行されます。 同期的に実行するのは、非常に短時間で完了する継続タスクのみでなければなりません。

タスクは同期的に実行されるため、Wait() などのメソッドを呼び出して、呼び出しスレッドがタスクの完了を待機する必要はありません。

HideScheduler 16

継続がメソッド (Run(Action) または ContinueWith(Action<Task>) など) を呼び出すことにより作成したタスクが、この継続の実行基盤であるスケジューラーではなく、既定のスケジューラー (Default) を現在のスケジューラーとして参照することを指定します。

LazyCancellation 32

継続取り消しの場合は、継続元が完了するまで、継続が完了しないようにします。

LongRunning 2

継続が、実行に時間のかかる、細分化されていない操作であることを示します。 これは、TaskScheduler に対し、オーバーサブスクリプションを許可してもよいことを示します。

None 0

継続のオプションが指定されていない場合は、継続を実行するときに既定の動作を使用する必要があることを指定します。 継続元タスクが完了したら、継続元の最終的な Status プロパティ値に関係なく、継続を非同期的に実行します。 継続が子タスクの場合は、デタッチされた入れ子になったタスクとして作成されます。

NotOnCanceled 262144

前のタスクが取り消された場合は継続タスクをスケジュールしないように指定します。 完了時に継続元の Status プロパティが Canceled である場合、継続元は取り消されます。 このオプションは、マルチタスクの継続タスクに対しては無効です。

NotOnFaulted 131072

前のタスクで処理されない例外がスローされた場合は継続タスクをスケジュールしないように指定します。 完了時に継続元の Status プロパティが Faulted である場合、継続元はハンドルされない例外をスローします。 このオプションは、マルチタスクの継続タスクに対しては無効です。

NotOnRanToCompletion 65536

前のタスクが完了まで実行された場合は、継続タスクをスケジュールしないように指定します。 完了時に継続元の Status プロパティが RanToCompletion である場合、継続元は完了まで実行されます。 このオプションは、マルチタスクの継続タスクに対しては無効です。

OnlyOnCanceled 196608

継続元が取り消された場合にのみ継続をスケジュールするように指定します。 完了時に継続元の Status プロパティが Canceled である場合、継続元は取り消されます。 このオプションは、マルチタスクの継続タスクに対しては無効です。

OnlyOnFaulted 327680

前のタスクで処理されない例外がスローされた場合にのみ継続タスクをスケジュールするように指定します。 完了時に継続元の Status プロパティが Faulted である場合、継続元はハンドルされない例外をスローします。

OnlyOnFaulted オプションを指定すると、継続元の Exception プロパティが null でないことが保証されます。 このプロパティを使用すると、例外をキャッチして、タスクの違反の原因となった例外を確認できます。 Exception プロパティにアクセスしない場合、例外はハンドルされません。 また、取り消されたタスクまたはエラーが発生したタスクの Result プロパティにアクセスしようとする場合も、新しい例外がスローされます。

このオプションは、マルチタスクの継続タスクに対しては無効です。

OnlyOnRanToCompletion 393216

継続元が完了まで実行された場合にのみ継続をスケジュールするように指定します。 完了時に継続元の Status プロパティが RanToCompletion である場合、継続元は完了まで実行されます。 このオプションは、マルチタスクの継続タスクに対しては無効です。

PreferFairness 1

TaskScheduler に対するヒントはスケジュールされた順序でタスクをスケジュールするため、先にスケジュールされたタスクは先に実行される可能性が高く、後からスケジュールされたタスクは後で実行される可能性が高くなります。

RunContinuationsAsynchronously 64

継続タスクを非同期的に実行するように指定します。 このオプションは ExecuteSynchronously より優先されます。

適用対象