TaskContinuationOptions Enumerazione

Definizione

Specifica il comportamento per un'attività creata utilizzando 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

Nome Valore Descrizione
None 0

Quando non vengono specificate opzioni di continuazione, specifica che il comportamento predefinito deve essere utilizzato durante l'esecuzione di una continuazione. La continuazione viene eseguita in modo asincrono al termine dell'attività precedente, indipendentemente dal valore finale della proprietà precedente Status . Se la continuazione è un'attività figlio, viene creata come attività annidata scollegata.

PreferFairness 1

Suggerimento per un'attività TaskScheduler di pianificazione nell'ordine in cui sono state pianificate, in modo che le attività pianificate prima vengano eseguite prima e le attività pianificate in un secondo momento saranno più probabili in un secondo momento.

LongRunning 2

Specifica che una continuazione sarà un'operazione con granularità prolungata. Fornisce un suggerimento al fatto che l'oversubscription TaskScheduler può essere garantito.

AttachedToParent 4

Specifica che la continuazione, se è un'attività figlio, è associata a un elemento padre nella gerarchia di attività. La continuazione può essere un'attività figlio solo se il relativo precedente è anche un'attività figlio. Per impostazione predefinita, un'attività figlio , ovvero un'attività interna creata da un'attività esterna, viene eseguita indipendentemente dal relativo elemento padre. È possibile usare l'opzione AttachedToParent in modo che le attività padre e figlio siano sincronizzate.

Si noti che se un'attività padre è configurata con l'opzione DenyChildAttach , l'opzione AttachedToParent nell'attività figlio non ha alcun effetto e l'attività figlio verrà eseguita come attività figlio scollegata.

Per ulteriori informazioni, vedere Attività Figlio Collegate e Scollegate.

DenyChildAttach 8

Specifica che qualsiasi attività figlio( ovvero qualsiasi attività interna annidata creata da questa continuazione) creata con l'opzione AttachedToParent e tenta di eseguire come attività figlio associata non sarà in grado di collegarsi all'attività padre e verrà eseguita invece come attività figlio scollegata. Per ulteriori informazioni, vedere Attività Figlio Collegate e Scollegate.

HideScheduler 16

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

LazyCancellation 32

In caso di annullamento della continuazione, impedisce il completamento della continuazione fino al completamento dell'attività precedente.

RunContinuationsAsynchronously 64

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

NotOnRanToCompletion 65536

Specifica che l'attività di continuazione non deve essere pianificata se l'attività precedente è stata eseguita fino al completamento. Un antecedent viene eseguito fino al completamento se la relativa Status proprietà al completamento è RanToCompletion. Questa opzione non è valida per le continuazioni a più attività.

NotOnFaulted 131072

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

OnlyOnCanceled 196608

Specifica che la continuazione deve essere pianificata solo se il relativo precedente è stato annullato. Un antecedent viene annullato se la relativa Status proprietà al completamento è Canceled. Questa opzione non è valida per le continuazioni a più attività.

NotOnCanceled 262144

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

OnlyOnFaulted 327680

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

L'opzione OnlyOnFaulted garantisce che la Exception proprietà nell'oggetto precedente non nullsia . È possibile usare tale proprietà per intercettare l'eccezione e vedere quale eccezione ha causato l'errore dell'attività. Se non si accede alla Exception proprietà , l'eccezione non viene gestita. Inoltre, se si tenta di accedere alla Result proprietà di un'attività che è stata annullata o che si è verificato un errore, viene generata una nuova eccezione.

Questa opzione non è valida per le continuazioni a più attività.

OnlyOnRanToCompletion 393216

Specifica che la continuazione deve essere pianificata solo se l'attività precedente è stata eseguita fino al completamento. Un antecedent viene eseguito fino al completamento se la relativa Status proprietà al completamento è RanToCompletion. Questa opzione non è valida per le continuazioni a più attività.

ExecuteSynchronously 524288

Specifica che l'attività di continuazione deve essere eseguita in modo sincrono. Con questa opzione specificata, la continuazione viene eseguita nello stesso thread che fa sì che l'attività precedente passi allo stato finale. Se l'attività precedente è già stata completata al momento della creazione della continuazione, la continuazione verrà eseguita nel thread che crea la continuazione. Se il precedente viene eliminato in un blocco /> in Visual Basic), verrà eseguita una continuazione con questa opzione in tale blocco . Solo le continuazioni a esecuzione molto breve devono essere eseguite in modo sincrono.

Poiché l'attività viene eseguita in modo sincrono, non è necessario chiamare un metodo, Wait() ad esempio per assicurarsi che il thread chiamante attenda il completamento dell'attività.

Si applica a