Partager via


TaskContinuationOptions Énumération

Définition

Spécifie le comportement pour une tâche créée à l'aide de la méthode ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) ou ContinueWith(Action<Task<TResult>>, TaskContinuationOptions).

Cette énumération prend en charge une combinaison au niveau du bit de ses valeurs membres.

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
Héritage
TaskContinuationOptions
Attributs

Champs

AttachedToParent 4

Spécifie que la continuation, s'il s'agit d'une tâche enfant, est jointe à un parent dans la hiérarchie des tâches. La continuation peut être une tâche enfant uniquement si son antécédent est également une tâche enfant. Par défaut, une tâche enfant (autrement dit, une tâche interne créée par une tâche externe) est exécutée indépendamment de son parent. Vous pouvez utiliser l'option AttachedToParent pour que les tâches parente et enfant soient synchronisées.

Notez que si une tâche parente est configurée avec l'option DenyChildAttach, l'option AttachedToParent de la tâche enfant n'a aucun effet, et la tâche enfant s'exécute en tant que tâche enfant détachée.

Pour plus d'informations, consultez Tâches enfants attachées et détachées.

DenyChildAttach 8

Indique qu'une tâche enfant (c'est-à-dire toute tâche interne imbriquée créée par cette continuation) créée avec l'option AttachedToParent et qui tente de s'exécuter comme une tâche enfant détachée ne peut pas être attachée à la tâche parente et s'exécute à la place comme tâche enfant détachée. Pour plus d'informations, consultez Tâches enfants attachées et détachées.

ExecuteSynchronously 524288

Spécifie que la tâche de continuation doit être exécutée de façon synchrone. Quand cette option est activée, la continuation est exécutée sur le thread qui provoque le passage de la tâche antérieure à son état final. Si l'antécédent est déjà terminé lors de la création de la continuation, celle-ci s'exécute sur le thread qui crée la continuation. Si le CancellationTokenSource de l'antécédent est supprimé dans un bloc finally (Finally en Visual Basic), une continuation avec cette option s'exécutera dans ce bloc finally. Seules les continuations très brèves doivent être exécutées de façon synchrone.

Étant donné que la tâche s'exécute de façon synchrone, il n'est pas nécessaire d'appeler une méthode telle que Wait() pour vous assurer que le thread appelant attend la fin de la tâche.

HideScheduler 16

Spécifie que les tâches créées par la continuation en appelant des méthodes comme Run(Action) ou ContinueWith(Action<Task>) voient le planificateur par défaut (Default) plutôt que le planificateur sur lequel cette continuation s’exécute comme planificateur actuel.

LazyCancellation 32

Dans le cas d'une annulation de continuation, empêche l'achèvement de la continuation tant que l'antécédent n'est pas terminé.

LongRunning 2

Spécifie qu'une continuation sera une opération de longue durée et de granulosité grossière. Conseille au TaskScheduler de garantir le surabonnement.

None 0

Quand aucune option de continuation n'est spécifiée, indique que le comportement par défaut doit être utilisé lors de l'exécution d'une continuation. La continuation s'exécute de façon asynchrone quand la tâche antécédente se termine, quelle que soit la valeur de propriété Status finale de l'antécédent. Si la continuation est une tâche enfant, elle est créée en tant que tâche imbriquée détachée.

NotOnCanceled 262144

Spécifie que la tâche de continuation ne doit pas être planifiée si son antécédent a été annulé. Un antécédent est annulé si sa propriété Status à l'achèvement est Canceled. Cette option n’est pas valide pour les continuations multitâches.

NotOnFaulted 131072

Spécifie que la tâche de continuation ne doit pas être planifiée si son antécédent a levé une exception non gérée. Un antécédent lève une exception non gérée si sa propriété Status à l‘achèvement est Faulted. Cette option n’est pas valide pour les continuations multitâches.

NotOnRanToCompletion 65536

Spécifie que la tâche de continuation ne doit pas être planifiée si son antécédent s'est terminé. Un antécédent s'exécute jusqu'à son achèvement si sa propriété Status à l'achèvement est RanToCompletion. Cette option n’est pas valide pour les continuations multitâches.

OnlyOnCanceled 196608

Spécifie que la continuation doit être planifiée uniquement si son antécédent a été annulé. Un antécédent est annulé si sa propriété Status à l'achèvement est Canceled. Cette option n’est pas valide pour les continuations multitâches.

OnlyOnFaulted 327680

Spécifie que la tâche de continuation doit être planifiée uniquement si son antécédent a levé une exception non gérée. Un antécédent lève une exception non gérée si sa propriété Status à l‘achèvement est Faulted.

L’option OnlyOnFaulted garantit que la propriété Exception de l’antécédent n’est pas null. Vous pouvez utiliser cette propriété pour intercepter l’exception et voir quelle exception a provoqué l’erreur de la tâche. Si vous n'accédez pas à la propriété Exception, l'exception n'est pas gérée. De plus, si vous essayez d'accéder à la propriété Result d'une tâche qui été annulée ou a rencontré une erreur, une nouvelle exception est levée.

Cette option n’est pas valide pour les continuations multitâches.

OnlyOnRanToCompletion 393216

Spécifie que la continuation doit être planifiée uniquement si son antécédent s'est terminé. Un antécédent s'exécute jusqu'à son achèvement si sa propriété Status à l'achèvement est RanToCompletion. Cette option n’est pas valide pour les continuations multitâches.

PreferFairness 1

Conseil à un TaskScheduler pour planifier des tâches dans l'ordre dans lequel elles ont été planifiées. Les tâches planifiées plus tôt sont plus susceptibles de s'exécuter plus tôt et celles planifiées plus tard sont plus susceptibles de s'exécuter ultérieurement.

RunContinuationsAsynchronously 64

Indique que la tâche de continuation doit être exécutée de façon asynchrone. Cette option est prioritaire sur ExecuteSynchronously.

S’applique à