TaskContinuationOptions Enumeração

Definição

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

Esta enumeração suporta uma combinação bit-a-bit dos respetivos valores 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

Name Valor Description
None 0

Quando não são especificadas opções de continuação, especifica que o comportamento padrão deve ser usado ao executar uma continuação. A continuação corre assíncrona quando a tarefa antecedente termina, independentemente do valor final Status da propriedade do antecedente. Se a continuação for uma tarefa filha, é criada como uma tarefa aninhada e separada.

PreferFairness 1

Uma dica para TaskScheduler agendar tarefas pela ordem em que foram agendadas, para que as tarefas agendadas mais cedo tenham maior probabilidade de serem executadas mais cedo, e as tarefas agendadas mais tarde tenham maior probabilidade de serem executadas mais tarde.

LongRunning 2

Especifica que uma continuação será uma operação de longa duração e com rumo definido. Dá uma pista de TaskScheduler que pode ser justificado o excesso de subscrição.

AttachedToParent 4

Especifica que a continuação, se for uma tarefa filha, está associada a um pai na hierarquia de tarefas. A continuação só pode ser uma tarefa filha se o seu antecedente também for uma tarefa filha. Por defeito, uma tarefa filha (ou seja, uma tarefa interna criada por uma tarefa externa) é executada independentemente do seu pai. Pode usar a AttachedToParent opção para que as tarefas pais e filhas estejam sincronizadas.

Note que, se uma tarefa pai estiver configurada com a DenyChildAttach opção, a AttachedToParent opção na tarefa filha não tem efeito, e a tarefa filha será executada como uma tarefa filha destacada.

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

DenyChildAttach 8

Especifica que qualquer tarefa filho (ou seja, qualquer tarefa interna aninhada criada por esta continuação) que seja criada com a AttachedToParent opção e tente executar como tarefa filha anexada não poderá ser anexada à tarefa pai e será executada em vez disso como uma tarefa filha destacada. Para obter mais informações, consulte Tarefas subordinadas anexadas e desanexadas.

HideScheduler 16

Especifica que as tarefas criadas pela continuação através de métodos como Run(Action) ou ContinueWith(Action<Task>) vejam o agendador padrão (Default) em vez do escalonador onde esta continuação está a correr como o agendador atual.

LazyCancellation 32

No caso do cancelamento de continuação, impede a conclusão da continuação até que o antecedente esteja concluído.

RunContinuationsAsynchronously 64

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

NotOnRanToCompletion 65536

Especifica que a tarefa de continuação não deve ser agendada se o seu antecedente tiver sido concluído. Um antecedente corre até à conclusão se a sua Status propriedade ao completar for RanToCompletion. Esta opção não é válida para continuações multitarefa.

NotOnFaulted 131072

Especifica que a tarefa de continuação não deve ser agendada se o seu antecessor tiver lançado uma exceção não tratada. Um antecedente lança uma exceção não tratada se a sua Status propriedade ao ser concluída for Faulted. Esta opção não é válida para continuações multitarefa.

OnlyOnCanceled 196608

Especifica que a continuação deve ser agendada apenas se o seu antecedente tiver sido cancelado. Um antecedente é anulado se a sua Status propriedade ao completar for Canceled. Esta opção não é válida para continuações multitarefa.

NotOnCanceled 262144

Especifica que a tarefa de continuação não deve ser agendada se o seu antecedente foi cancelado. Um antecedente é anulado se a sua Status propriedade ao completar for Canceled. Esta opção não é válida para continuações multitarefa.

OnlyOnFaulted 327680

Especifica que a tarefa de continuação deve ser agendada apenas se o seu antecessor tiver lançado uma exceção não tratada. Um antecedente lança uma exceção não tratada se a sua Status propriedade ao ser concluída for Faulted.

A OnlyOnFaulted opção garante que a Exception propriedade no antecedente não nullé . Podes usar essa propriedade para apanhar a exceção e ver qual exceção causou a falha na tarefa. Se não aceder à Exception propriedade, a exceção não é tratada. Além disso, se tentar aceder à Result propriedade de uma tarefa que foi cancelada ou teve falha, é lançada uma nova exceção.

Esta opção não é válida para continuações multitarefa.

OnlyOnRanToCompletion 393216

Especifica que a continuação deve ser agendada apenas se o seu antecessor tiver sido concluído. Um antecedente corre até à conclusão se a sua Status propriedade ao completar for RanToCompletion. Esta opção não é válida para continuações multitarefa.

ExecuteSynchronously 524288

Especifica que a tarefa de continuação deve ser executada de forma síncrona. Com esta opção especificada, a continuação corre no mesmo thread que faz a transição da tarefa antecedente para o seu estado final. Se o antecedente já estiver completo quando a continuação é criada, a continuação será executada no thread que cria a continuação. Se o CancellationTokenSource do antecedente for descartado num bloco finally (Finally em Visual Basic), uma continuação com esta opção será executada nesse bloco finally. Apenas continuações muito curtas devem ser executadas de forma síncrona.

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

Aplica-se a