TaskContinuationOptions Wyliczenie

Definicja

Określa zachowanie zadania utworzonego przy użyciu metody ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) lub ContinueWith(Action<Task<TResult>>, TaskContinuationOptions).

To wyliczenie obsługuje bitową kombinację jego wartości składowych.

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
Dziedziczenie
TaskContinuationOptions
Atrybuty

Pola

Nazwa Wartość Opis
None 0

Jeśli nie określono opcji kontynuacji, określa, że podczas wykonywania kontynuacji należy używać domyślnego zachowania. Kontynuacja jest uruchamiana asynchronicznie, gdy zadanie antecedent zostanie ukończone, niezależnie od ostatecznej Status wartości właściwości antecedenta. Jeśli kontynuacja jest zadaniem podrzędnym, zostanie ono utworzone jako odłączone zadanie zagnieżdżone.

PreferFairness 1

Wskazówka do TaskScheduler zaplanowana zadania w kolejności, w której zostały zaplanowane, tak aby zaplanowane wcześniej zadania były bardziej prawdopodobne, aby były uruchamiane wcześniej, a zaplanowane później zadania są bardziej prawdopodobne, aby były uruchamiane później.

LongRunning 2

Określa, że kontynuacja będzie długotrwałą operacją z ziarnem kursu. Zawiera wskazówkę dotyczącą TaskScheduler tego, że nadsubskrypcja może być uzasadnione.

AttachedToParent 4

Określa, że kontynuacja, jeśli jest zadaniem podrzędnym, jest dołączona do elementu nadrzędnego w hierarchii zadań. Kontynuacja może być zadaniem podrzędnym tylko wtedy, gdy jego antecedent jest również zadaniem podrzędnym. Domyślnie zadanie podrzędne (czyli zadanie wewnętrzne utworzone przez zadanie zewnętrzne) jest wykonywane niezależnie od jego elementu nadrzędnego. Możesz użyć AttachedToParent opcji , aby zadania nadrzędne i podrzędne zostały zsynchronizowane.

Należy pamiętać, że jeśli zadanie nadrzędne jest skonfigurowane z DenyChildAttach opcją , AttachedToParent opcja w zadaniu podrzędnym nie ma wpływu, a zadanie podrzędne zostanie wykonane jako odłączone zadanie podrzędne.

Aby uzyskać więcej informacji, zobacz wiązane i odłączane zadania podrzędne.

DenyChildAttach 8

Określa, że każde zadanie podrzędne (czyli każde zagnieżdżone zadanie wewnętrzne utworzone przez tę kontynuację) utworzone za pomocą AttachedToParent opcji i próby wykonania jako dołączone zadanie podrzędne nie będzie mogło dołączyć do zadania nadrzędnego i zostanie wykonane zamiast tego jako odłączone zadanie podrzędne. Aby uzyskać więcej informacji, zobacz wiązane i odłączane zadania podrzędne.

HideScheduler 16

Określa, że zadania utworzone przez kontynuację przez wywoływanie metod, takich jak Run(Action) lub ContinueWith(Action<Task>) zobacz domyślny harmonogram (Default), a nie harmonogram, na którym ta kontynuacja jest uruchomiona jako bieżący harmonogram.

LazyCancellation 32

W przypadku anulowania kontynuacji uniemożliwia ukończenie kontynuacji do momentu ukończenia antecedent.

RunContinuationsAsynchronously 64

Określa, że zadanie kontynuacji powinno być uruchamiane asynchronicznie. Ta opcja ma pierwszeństwo przed ExecuteSynchronously.

NotOnRanToCompletion 65536

Określa, że zadanie kontynuacji nie powinno być zaplanowane, jeśli jego antecedent został uruchomiony do ukończenia. Antecedent jest uruchamiany do ukończenia, jeśli jego Status właściwość po zakończeniu to RanToCompletion. Ta opcja jest nieprawidłowa dla kontynuacji wielu zadań.

NotOnFaulted 131072

Określa, że zadanie kontynuacji nie powinno być zaplanowane, jeśli jego antecedent rzucił nieobsługiwany wyjątek. Antecedent zgłasza nieobsługiwany wyjątek, jeśli jego Status właściwość po zakończeniu to Faulted. Ta opcja jest nieprawidłowa dla kontynuacji wielu zadań.

OnlyOnCanceled 196608

Określa, że kontynuacja powinna być zaplanowana tylko wtedy, gdy jego antecedent został anulowany. Antecedent jest anulowany, jeśli jego Status właściwość po zakończeniu to Canceled. Ta opcja jest nieprawidłowa dla kontynuacji wielu zadań.

NotOnCanceled 262144

Określa, że zadanie kontynuacji nie powinno być zaplanowane, jeśli jego antecedent został anulowany. Antecedent jest anulowany, jeśli jego Status właściwość po zakończeniu to Canceled. Ta opcja jest nieprawidłowa dla kontynuacji wielu zadań.

OnlyOnFaulted 327680

Określa, że zadanie kontynuacji powinno być zaplanowane tylko wtedy, gdy jego antecedent rzucił nieobsługiwany wyjątek. Antecedent zgłasza nieobsługiwany wyjątek, jeśli jego Status właściwość po zakończeniu to Faulted.

Opcja OnlyOnFaulted gwarantuje, że Exception właściwość w antecedent nie nulljest . Możesz użyć tej właściwości, aby przechwycić wyjątek i zobaczyć, który wyjątek spowodował błąd zadania. Jeśli nie uzyskujesz dostępu do Exception właściwości, wyjątek jest nieobsługiwany. Ponadto, jeśli próbujesz uzyskać dostęp Result do właściwości zadania, które zostało anulowane lub zostało uszkodzone, zostanie zgłoszony nowy wyjątek.

Ta opcja jest nieprawidłowa dla kontynuacji wielu zadań.

OnlyOnRanToCompletion 393216

Określa, że kontynuacja powinna być zaplanowana tylko wtedy, gdy jego antecedent został uruchomiony do ukończenia. Antecedent jest uruchamiany do ukończenia, jeśli jego Status właściwość po zakończeniu to RanToCompletion. Ta opcja jest nieprawidłowa dla kontynuacji wielu zadań.

ExecuteSynchronously 524288

Określa, że zadanie kontynuacji powinno być wykonywane synchronicznie. Po określeniu tej opcji kontynuacja jest uruchamiana w tym samym wątku, co powoduje przejście zadania antecedent do stanu końcowego. Jeśli antecedent jest już ukończony po utworzeniu kontynuacji, kontynuacja zostanie uruchomiona w wątku, który tworzy kontynuację. Jeśli CancellationTokenSource antecedent jest usuwany w bloku finally (Finally w Visual Basic), kontynuacja z tą opcją zostanie uruchomiona w tym bloku finally. Synchronicznie należy wykonać tylko bardzo krótkie kontynuacje.

Ponieważ zadanie jest wykonywane synchronicznie, nie ma potrzeby wywoływania metody, takiej jak Wait() zapewnienie, że wątek wywołujący czeka na ukończenie zadania.

Dotyczy