Condividi tramite


TaskContinuationOptions Enumerazione

Definizione

Specifica il comportamento di un'attività creata tramite il metodo ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) o ContinueWith(Action<Task<TResult>>, TaskContinuationOptions).

Questa enumerazione supporta una combinazione bit per bit dei rispettivi valori dei membri.

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
Ereditarietà
TaskContinuationOptions
Attributi

Campi

AttachedToParent 4

Specifica che la continuazione, se è un'attività figlio, è connessa a un elemento padre della gerarchia delle attività. La continuazione può essere un'attività figlio solo se anche la relativa attività precedente è un'attività figlio. Per impostazione predefinita, un'attività figlio, ovvero un'attività interna creata da un'attività esterna, viene eseguita indipendentemente dalla relativa attività padre. È possibile usare l'opzione AttachedToParent per mantenere sincronizzate le attività padre e figlio.

Si noti che se un'attività padre viene configurata con l'opzione DenyChildAttach, l'opzione AttachedToParent nell'attività figlio non avrà effetto e quest'ultima verrà eseguita come attività figlio disconnessa.

Per altre informazioni, vedere Attività figlio connesse e disconnesse.

DenyChildAttach 8

Specifica che qualsiasi attività figlio (ovvero qualsiasi attività interna annidata creata da questa continuazione) che venga creata con l'opzione AttachedToParent e tenti l'esecuzione come attività figlio connessa non potrà collegarsi all'attività padre e verrà invece eseguita come attività figlio disconnessa. Per altre informazioni, vedere Attività figlio connesse e disconnesse.

ExecuteSynchronously 524288

Specifica che l'attività di continuazione deve essere eseguita in modo sincrono. Se si specifica questa opzione, la continuazione viene eseguita nello stesso thread che comporta la transizione dell'attività precedente allo stato finale. Se quando la continuazione viene creata l'attività precedente è già completa, la continuazione verrà eseguita nel thread che crea la continuazione. Se CancellationTokenSource dell'attività precedente viene collocato in un blocco finally (Finally in Visual Basic), verrà eseguita una continuazione con questa opzione in tale blocco finally. Eseguire in modo sincrono soltanto le continuazioni che presentano un'esecuzione molto breve.

Dal momento che l'attività viene eseguita in modo asincrono, non è necessario chiamare un metodo come Wait() per garantire che il thread chiamante attenda il completamento dell'attività.

HideScheduler 16

Specifica le attività create dalla continuazione chiamando i metodi come Run(Action) o ContinueWith(Action<Task>). Vedere l'utilità di pianificazione predefinita (Default) anziché l'utilità di pianificazione in cui è in esecuzione la continuazione come utilità di pianificazione corrente.

LazyCancellation 32

In caso di annullamento della continuazione, impedisce il completamento della continuazione finché l'attività precedente non è stata completata.

LongRunning 2

Specifica che la continuazione sarà un'operazione a bassa precisione di lunga durata. Fornisce a TaskScheduler un'indicazione in merito alla possibilità di dover ricorrere all'oversubscription.

None 0

Quando non viene specificata alcuna opzione di continuazione, specifica che deve essere usato un comportamento predefinito quando si esegue una continuazione. La continuazione viene eseguita in modo asincrono al completamento dell'attività precedente, indipendentemente dal valore della proprietà Status finale dell'attività precedente. Se la continuazione è un'attività figlio, viene creata come attività annidata scollegata.

NotOnCanceled 262144

Specifica che l'attività di continuazione non deve essere pianificata se l'attività precedente è stata annullata. Un'attività precedente viene annullata se la relativa proprietà Status al completamento è Canceled. Questa opzione non è valida per le continuazioni multiattività.

NotOnFaulted 131072

Specifica che l'attività di continuazione non deve essere pianificata se la relativa attività precedente ha generato un'eccezione non gestita. Un'attività precedente genera un'eccezione non gestita se la relativa proprietà Status al completamento è Faulted. Questa opzione non è valida per le continuazioni multiattività.

NotOnRanToCompletion 65536

Specifica che l'attività di continuazione non deve essere pianificata se l'esecuzione della relativa attività precedente è stata completata. Un'attività precedente viene eseguita fino al completamento se la relativa proprietà Status al completamento è RanToCompletion. Questa opzione non è valida per le continuazioni multiattività.

OnlyOnCanceled 196608

Specifica che la continuazione deve essere pianificata solo se l'attività precedente è stata annullata. Un'attività precedente viene annullata se la relativa proprietà Status al completamento è Canceled. Questa opzione non è valida per le continuazioni multiattività.

OnlyOnFaulted 327680

Specifica che l'attività di continuazione deve essere pianificata solo se la relativa attività precedente ha generato un'eccezione non gestita. Un'attività precedente genera un'eccezione non gestita se la relativa proprietà Status al completamento è Faulted.

L'opzione OnlyOnFaulted garantisce che la proprietà Exception dell'attività precedente non sia null. È possibile usare tale proprietà per rilevare l'eccezione e determinare quale eccezione ha comportato errori nell'attività. Se non si accede alla proprietà Exception, l'eccezione non viene gestita. Inoltre, se si tenta di accedere alla proprietà Result di un'attività che è stata annullata o in cui si sono verificati errori, verrà generata una nuova eccezione.

Questa opzione non è valida per le continuazioni multiattività.

OnlyOnRanToCompletion 393216

Specifica che la continuazione deve essere pianificata solo se l'esecuzione della relativa attività precedente è stata completata. Un'attività precedente viene eseguita fino al completamento se la relativa proprietà Status al completamento è RanToCompletion. Questa opzione non è valida per le continuazioni multiattività.

PreferFairness 1

Indicazione fornita a un oggetto TaskScheduler affinché pianifichi un'attività nell'ordine in cui sono state pianificate, in modo che le attività pianificate prima abbiano più possibilità di essere eseguite prima delle attività pianificate in un secondo momento.

RunContinuationsAsynchronously 64

Specifica che l'attività di continuazione deve essere eseguita in modo asincrono. Questa opzione ha la precedenza rispetto a ExecuteSynchronously.

Si applica a