TaskContinuationOptions Перечисление

Определение

Задает поведение для задачи, созданной с помощью метода ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) или ContinueWith(Action<Task<TResult>>, TaskContinuationOptions).Specifies the behavior for a task that is created by using the ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) or ContinueWith(Action<Task<TResult>>, TaskContinuationOptions) method.

Это перечисление имеет атрибут FlagsAttribute, который разрешает побитовое сочетание значений его элементов.

public enum class TaskContinuationOptions
[System.Flags]
[System.Serializable]
public enum TaskContinuationOptions
type TaskContinuationOptions = 
Public Enum TaskContinuationOptions
Наследование
TaskContinuationOptions
Атрибуты

Поля

AttachedToParent 4

Указывает, что если продолжение является дочерней задачей, оно присоединяется к родительской задаче в иерархии задач.Specifies that the continuation, if it is a child task, is attached to a parent in the task hierarchy. Продолжение может быть дочерней задачей, только если ее предшествующая задача тоже была дочерней.The continuation can be a child task only if its antecedent is also a child task. По умолчанию дочерняя задача (это внутренняя задача, создаваемая внешней задачей) выполняется независимо от своей родительской задачи.By default, a child task (that is, an inner task created by an outer task) executes independently of its parent. Вы можете воспользоваться параметром AttachedToParent, чтобы синхронизировать родительские и дочерние задачи.You can use the AttachedToParent option so that the parent and child tasks are synchronized.

Обратите внимание, что если родительская задача настроена с параметром DenyChildAttach, параметр AttachedToParent в дочерней задаче не действует, и эта дочерняя задача будет выполняться как отсоединенная.Note that if a parent task is configured with the DenyChildAttach option, the AttachedToParent option in the child task has no effect, and the child task will execute as a detached child task.

Дополнительные сведения см. в разделе Присоединенные и отсоединенные дочерние задачи.For more information, see Attached and Detached Child Tasks.

DenyChildAttach 8

Указывает, что любая дочерняя задача (т. е. любая вложенная задача, созданная продолжением), которая создается с параметром AttachedToParent и для которой производится попытка выполнения в качестве подключенной дочерней задачи, не сможет подключиться к родительской задаче и будет выполняться как отсоединенная дочерняя задача.Specifies that any child task (that is, any nested inner task created by this continuation) that is created with the AttachedToParent option and attempts to execute as an attached child task will not be able to attach to the parent task and will execute instead as a detached child task. Для получения дополнительной информации см. Attached and Detached Child Tasks.For more information, see Attached and Detached Child Tasks.

ExecuteSynchronously 524288

Указывает, что задача продолжения должна выполняться синхронно.Specifies that the continuation task should be executed synchronously. Если этот параметр указан, продолжение выполняется в том же потоке, который приводит к переходу предшествующей задачи в конечное состояние.With this option specified, the continuation runs on the same thread that causes the antecedent task to transition into its final state. Если при создании продолжения предшествующая задача уже завершена, продолжение будет выполняться в потоке, создавшем его.If the antecedent is already complete when the continuation is created, the continuation will run on the thread that creates the continuation. Если объект CancellationTokenSource предшествующей задачи в блоке finally (Finally в Visual Basic) удаляется, продолжение с этим параметром будет запущено в указанном блокеfinally.If the antecedent's CancellationTokenSource is disposed in a finally block (Finally in Visual Basic), a continuation with this option will run in that finally block. Только очень короткие продолжения должны выполняться синхронно.Only very short-running continuations should be executed synchronously.

Так как задача выполняется синхронно, нет необходимости вызывать, например, метод Wait(), чтобы убедиться, что вызывающий поток ожидает завершения задачи.Because the task executes synchronously, there is no need to call a method such as Wait() to ensure that the calling thread waits for the task to complete.

HideScheduler 16

Указывает, что в задачах, созданных путем вызова таких методов, как Run(Action) или ContinueWith(Action<Task>), в качестве текущего планировщика отображается планировщик по умолчанию (Default), а не планировщик, в котором запущено продолжение.Specifies that tasks created by the continuation by calling methods such as Run(Action) or ContinueWith(Action<Task>) see the default scheduler (Default) rather than the scheduler on which this continuation is running as the current scheduler.

LazyCancellation 32

В случае отмены продолжения предотвращает завершение продолжения до тех пор, пока не будет завершена предшествующая задача.In the case of continuation cancellation, prevents completion of the continuation until the antecedent has completed.

LongRunning 2

Указывает, что продолжение будет длительной подробной операцией.Specifies that a continuation will be a long-running, course-grained operation. Предоставляет сведения для TaskScheduler , что следует ожидать избыточной подписки.It provides a hint to the TaskScheduler that oversubscription may be warranted.

None 0

Если параметры продолжения не указаны, указывает поведение по умолчанию, которое следует использовать при выполнении продолжения.When no continuation options are specified, specifies that default behavior should be used when executing a continuation. После завершения предыдущей задачи продолжение выполняется асинхронно независимо от конечного значения свойства Status предшествующей задачи.The continuation runs asynchronously when the antecedent task completes, regardless of the antecedent's final Status property value. Если продолжение является дочерней задачей, оно создается как отсоединенная вложенная задача.It the continuation is a child task, it is created as a detached nested task.

NotOnCanceled 262144

Указывает, что задача продолжения не должна планироваться, если предшествующая задача отменена.Specifies that the continuation task should not be scheduled if its antecedent was canceled. Предшествующая задача отменяется, если после завершения ее свойство Status имеет значение Canceled.An antecedent is canceled if its Status property upon completion is Canceled. Данный параметр не является действительным для продолжений нескольких задач.This option is not valid for multi-task continuations.

NotOnFaulted 131072

Указывает, что задача продолжения не должна планироваться, если предшествующая ей задача создала необработанное исключение.Specifies that the continuation task should not be scheduled if its antecedent threw an unhandled exception. Предшествующая задача вызывает необработанное исключение, если после завершения ее свойство Status имеет значение Faulted.An antecedent throws an unhandled exception if its Status property upon completion is Faulted. Данный параметр не является действительным для продолжений нескольких задач.This option is not valid for multi-task continuations.

NotOnRanToCompletion 65536

Указывает, что задача продолжения не должна планироваться, если предшествующая ей задача завершилась.Specifies that the continuation task should not be scheduled if its antecedent ran to completion. Предшествующая задача выполняется полностью, если после завершения ее свойство Status имеет значение RanToCompletion.An antecedent runs to completion if its Status property upon completion is RanToCompletion. Данный параметр не является действительным для продолжений нескольких задач.This option is not valid for multi-task continuations.

OnlyOnCanceled 196608

Указывает, что продолжение должно планироваться, только если предшествующая задача отменена.Specifies that the continuation should be scheduled only if its antecedent was canceled. Предшествующая задача отменяется, если после завершения ее свойство Status имеет значение Canceled.An antecedent is canceled if its Status property upon completion is Canceled. Данный параметр не является действительным для продолжений нескольких задач.This option is not valid for multi-task continuations.

OnlyOnFaulted 327680

Указывает, что задача продолжения должна планироваться, только если предшествующая ей задача создала необработанное исключение.Specifies that the continuation task should be scheduled only if its antecedent threw an unhandled exception. Предшествующая задача вызывает необработанное исключение, если после завершения ее свойство Status имеет значение Faulted.An antecedent throws an unhandled exception if its Status property upon completion is Faulted.

Параметр OnlyOnFaulted гарантирует, что свойство Exception в предшествующей задаче не равно null.The OnlyOnFaulted option guarantees that the Exception property in the antecedent is not null. Это свойство можно использовать для перехвата исключения и определения исключения, вызвавшего сбой задачи.You can use that property to catch the exception and see which exception caused the task to fault. Если не обратиться к свойству Exception, исключение обрабатываться не будет.If you do not access the Exception property, the exception is unhandled. Кроме того, при попытке доступа к свойству Result задачи, которая была отменена или завершилась ошибкой, будет вызвано новое исключение.Also, if you attempt to access the Result property of a task that has been canceled or has faulted, a new exception is thrown.

Данный параметр не является действительным для продолжений нескольких задач.This option is not valid for multi-task continuations.

OnlyOnRanToCompletion 393216

Указывает, что продолжение должно планироваться, только если предшествующая задача завершилась.Specifies that the continuation should be scheduled only if its antecedent ran to completion. Предшествующая задача выполняется полностью, если после завершения ее свойство Status имеет значение RanToCompletion.An antecedent runs to completion if its Status property upon completion is RanToCompletion. Данный параметр не является действительным для продолжений нескольких задач.This option is not valid for multi-task continuations.

PreferFairness 1

Указание для планирования задач TaskScheduler в том порядке, в котором они были запланированы, т. е. задачи, запланированные ранее, будут выполняться ранее, а более поздние — позже.A hint to a TaskScheduler to schedule task in the order in which they were scheduled, so that tasks scheduled sooner are more likely to run sooner, and tasks scheduled later are more likely to run later.

RunContinuationsAsynchronously 64

Указывает, что задача продолжения должна выполняться асинхронно.Specifies that the continuation task should be run asynchronously. Этот приоритет имеет приоритет над ExecuteSynchronously.This option has precedence over ExecuteSynchronously.

Применяется к