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
属性

フィールド

名前 説明
None 0

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

PreferFairness 1

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

LongRunning 2

継続が実行時間の長いコースグレイン操作であることを指定します。 オーバーサブスクリプションが保証される可能性があることを TaskScheduler に示します。

AttachedToParent 4

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

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

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

DenyChildAttach 8

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

HideScheduler 16

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

LazyCancellation 32

継続キャンセルの場合、継続元が完了するまで継続の完了を防ぎます。

RunContinuationsAsynchronously 64

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

NotOnRanToCompletion 65536

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

NotOnFaulted 131072

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

OnlyOnCanceled 196608

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

NotOnCanceled 262144

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

OnlyOnFaulted 327680

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

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

このオプションは、複数タスクの継続には無効です。

OnlyOnRanToCompletion 393216

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

ExecuteSynchronously 524288

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

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

適用対象