Compartilhar via


TaskContinuationOptions Enumeração

Definição

Especifica o comportamento de uma tarefa criada com o método ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) ou ContinueWith(Action<Task<TResult>>, TaskContinuationOptions).

Essa enumeração dá suporte a uma combinação bit a bit dos valores de membro.

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
Herança
TaskContinuationOptions
Atributos

Campos

AttachedToParent 4

Especifica que a continuação, se for uma tarefa filho, será anexada a um pai na hierarquia de tarefas. A continuação poderá ser uma tarefa filho somente se seu antecessor também for uma tarefa filho. Por padrão, uma tarefa filho (ou seja, uma tarefa interna criada por uma tarefa externa) é executada independentemente de seu pai. Use a opção AttachedToParent para que as tarefas pai e filho sejam sincronizadas.

Observe que, se uma tarefa pai estiver configurada com a opção DenyChildAttach, a opção AttachedToParent na tarefa filho não terá efeito, e a tarefa filho será executada como uma tarefa filho desanexada.

Para obter mais informações, consulte Tarefas filho anexadas e desanexadas.

DenyChildAttach 8

Especifica que qualquer tarefa filho (ou seja, qualquer tarefa interna aninhada criada por essa continuação) criada com a opção AttachedToParent e que tenta ser executada como uma tarefa filho anexada não poderá ser anexada à tarefa pai e será executada como uma tarefa filho desanexada. Para obter mais informações, consulte Tarefas filho anexadas e desanexadas.

ExecuteSynchronously 524288

Especifica que a tarefa de continuação deve ser executada de forma síncrona. Com essa opção especificada, a continuação é executada no mesmo thread que faz com que a tarefa do antecessor faça a transição para o estado final. Se o antecessor já tiver sido concluído quando a continuação for criada, a continuação será executada no thread que cria a continuação. Se o CancellationTokenSource do antecessor for descartado em um bloco finally (Finally no Visual Basic), uma continuação com essa opção será executada nesse bloco finally. Somente continuações de execução muito curta devem ser executadas de forma síncrona.

Como a tarefa é executada de forma síncrona, não é necessário chamar um método como Wait() para garantir que o thread de chamada aguarda até que a tarefa seja concluída.

HideScheduler 16

Especifica que as tarefas criadas pela continuação com a chamada de métodos como Run(Action) ou ContinueWith(Action<Task>) observem o agendador padrão (Default) em vez do agendador no qual essa continuação está sendo executada como o agendador atual.

LazyCancellation 32

Em caso de cancelamento da continuação, impede a conclusão da continuação até que o antecessor seja concluído.

LongRunning 2

Especifica que uma continuação será uma operação de execução longa e de alta granularidade. Fornece uma dica para o TaskScheduler de que podem ser necessárias assinaturas em excesso.

None 0

Quando nenhuma opção de continuação é especificada, especifica que o comportamento padrão deve ser usado ao executar uma continuação. A continuação é executada de forma assíncrona quando a tarefa do antecessor é concluída, independentemente do valor da propriedade Status final do antecessor. Se a continuação for uma tarefa filho, ela será criada como uma tarefa aninhada desanexada.

NotOnCanceled 262144

Especifica que a tarefa de continuação não deve ser agendada se seu antecessor foi cancelado. Um antecessor será cancelado se a propriedade Status após a conclusão for Canceled. Essa opção não é válida para continuações de várias tarefas.

NotOnFaulted 131072

Especifica que a tarefa de continuação não deve ser agendada se seu antecessor gerou uma exceção sem tratamento. Um antecessor gerará uma exceção sem tratamento se a propriedade Status após a conclusão for Faulted. Essa opção não é válida para continuações de várias tarefas.

NotOnRanToCompletion 65536

Especifica que a tarefa de continuação não deve ser agendada se seu antecessor foi executado até a conclusão. Um antecessor será executado até a conclusão se a propriedade Status após a conclusão for RanToCompletion. Essa opção não é válida para continuações de várias tarefas.

OnlyOnCanceled 196608

Especifica que a continuação deve ser agendada somente se seu antecessor foi cancelado. Um antecessor será cancelado se a propriedade Status após a conclusão for Canceled. Essa opção não é válida para continuações de várias tarefas.

OnlyOnFaulted 327680

Especifica que a tarefa de continuação deve ser agendada somente se seu antecessor gerou uma exceção sem tratamento. Um antecessor gerará uma exceção sem tratamento se a propriedade Status após a conclusão for Faulted.

A opção OnlyOnFaulted garante que a propriedade Exception no antecessor não é null. Use essa propriedade para capturar a exceção e ver qual exceção causou a falha na tarefa. Se você não acessar a propriedade Exception, a exceção não será tratada. Além disso, se você tentar acessar a propriedade Result de uma tarefa cancelada ou que apresentou falha, uma nova exceção será gerada.

Essa opção não é válida para continuações de várias tarefas.

OnlyOnRanToCompletion 393216

Especifica que a continuação deve ser agendada somente se seu antecessor foi executado até a conclusão. Um antecessor será executado até a conclusão se a propriedade Status após a conclusão for RanToCompletion. Essa opção não é válida para continuações de várias tarefas.

PreferFairness 1

Uma dica para um TaskScheduler para agendar a tarefa na ordem em que as tarefas foram agendadas, para que seja mais provável que as tarefas agendadas anteriormente sejam executadas antes e as tarefas agendadas posteriormente sejam executadas depois.

RunContinuationsAsynchronously 64

Especifica que a tarefa de continuação deve ser executada de forma assíncrona. Essa opção tem precedência sobre ExecuteSynchronously.

Aplica-se a