TaskContinuationOptions Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Especifica el comportamiento de una tarea que se crea mediante el método ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) o ContinueWith(Action<Task<TResult>>, TaskContinuationOptions).
Esta enumeración admite una combinación bit a bit de sus valores de miembro.
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
- Herencia
- Atributos
Campos
| Nombre | Valor | Description |
|---|---|---|
| None | 0 | Cuando no se especifica ninguna opción de continuación, especifica que se debe usar el comportamiento predeterminado al ejecutar una continuación. La continuación se ejecuta de forma asincrónica cuando se completa la tarea antecedente, independientemente del valor final Status de la propiedad del antecedente. Si la continuación es una tarea secundaria, se crea como una tarea anidada desasociada. |
| PreferFairness | 1 | Una sugerencia para programar una TaskScheduler tarea en el orden en que se programaron, de modo que las tareas programadas antes son más probables que se ejecuten antes, y las tareas programadas más adelante son más probables que se ejecuten más adelante. |
| LongRunning | 2 | Especifica que una continuación será una operación específica de larga duración. Proporciona una sugerencia para que se pueda justificar la TaskScheduler sobresuscripción. |
| AttachedToParent | 4 | Especifica que la continuación, si es una tarea secundaria, se adjunta a un elemento primario de la jerarquía de tareas. La continuación puede ser una tarea secundaria solo si su antecedente también es una tarea secundaria. De forma predeterminada, una tarea secundaria (es decir, una tarea interna creada por una tarea externa) se ejecuta independientemente de su elemento primario. Puede usar la AttachedToParent opción para que se sincronicen las tareas primarias y secundarias. Tenga en cuenta que si una tarea primaria está configurada con la DenyChildAttach opción , la AttachedToParent opción de la tarea secundaria no tiene ningún efecto y la tarea secundaria se ejecutará como una tarea secundaria desasociada. Para más información, consulte Tareas secundarias asociadas y desasociadas. |
| DenyChildAttach | 8 | Especifica que cualquier tarea secundaria (es decir, cualquier tarea interna anidada creada por esta continuación) que se cree con la AttachedToParent opción e intente ejecutarse como una tarea secundaria adjunta no podrá asociarse a la tarea primaria y se ejecutará en su lugar como una tarea secundaria desasociada. Para más información, consulte Tareas secundarias asociadas y desasociadas. |
| HideScheduler | 16 | Especifica que las tareas creadas por la continuación llamando a métodos como Run(Action) o ContinueWith(Action<Task>) vea el programador predeterminado (Default) en lugar del programador en el que se ejecuta esta continuación como programador actual. |
| LazyCancellation | 32 | En el caso de cancelación de continuación, impide la finalización de la continuación hasta que se haya completado el antecedente. |
| RunContinuationsAsynchronously | 64 | Especifica que la tarea de continuación se debe ejecutar de forma asincrónica. Esta opción tiene prioridad sobre ExecuteSynchronously. |
| NotOnRanToCompletion | 65536 | Especifica que la tarea de continuación no se debe programar si su antecedente se ejecutó hasta la finalización. Un antecedente se ejecuta hasta la finalización si su Status propiedad tras la finalización es RanToCompletion. Esta opción no es válida para las continuaciones de varias tareas. |
| NotOnFaulted | 131072 | Especifica que la tarea de continuación no se debe programar si su antecedente produjo una excepción no controlada. Un antecedente produce una excepción no controlada si su Status propiedad tras la finalización es Faulted. Esta opción no es válida para las continuaciones de varias tareas. |
| OnlyOnCanceled | 196608 | Especifica que la continuación debe programarse solo si se canceló su antecedente. Se cancela un antecedente si su Status propiedad tras la finalización es Canceled. Esta opción no es válida para las continuaciones de varias tareas. |
| NotOnCanceled | 262144 | Especifica que la tarea de continuación no se debe programar si se canceló su antecedente. Se cancela un antecedente si su Status propiedad tras la finalización es Canceled. Esta opción no es válida para las continuaciones de varias tareas. |
| OnlyOnFaulted | 327680 | Especifica que la tarea de continuación solo se debe programar si su antecedente produjo una excepción no controlada. Un antecedente produce una excepción no controlada si su Status propiedad tras la finalización es Faulted. La OnlyOnFaulted opción garantiza que la Exception propiedad del antecedente no Esta opción no es válida para las continuaciones de varias tareas. |
| OnlyOnRanToCompletion | 393216 | Especifica que la continuación debe programarse solo si su antecedente se ejecutó hasta la finalización. Un antecedente se ejecuta hasta la finalización si su Status propiedad tras la finalización es RanToCompletion. Esta opción no es válida para las continuaciones de varias tareas. |
| ExecuteSynchronously | 524288 | Especifica que la tarea de continuación se debe ejecutar de forma sincrónica. Con esta opción especificada, la continuación se ejecuta en el mismo subproceso que hace que la tarea antecedente pase a su estado final. Si el antecedente ya está completo cuando se crea la continuación, la continuación se ejecutará en el subproceso que crea la continuación. Si el CancellationTokenSource del antecedente se elimina en un bloque Dado que la tarea se ejecuta de forma sincrónica, no es necesario llamar a un método como Wait() para asegurarse de que el subproceso que realiza la llamada espera a que se complete la tarea. |