TaskContinuationOptions Enum

Definisi

Menentukan perilaku untuk tugas yang dibuat dengan menggunakan metode ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) atau ContinueWith(Action<Task<TResult>>, TaskContinuationOptions).

Enumerasi ini mendukung kombinasi bitwise dari nilai yang termasuk di dalamnya.

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
Warisan
TaskContinuationOptions
Atribut

Bidang

Nama Nilai Deskripsi
None 0

Ketika tidak ada opsi kelanjutan yang ditentukan, menentukan bahwa perilaku default harus digunakan saat menjalankan kelanjutan. Kelanjutan berjalan secara asinkron ketika tugas antecedent selesai, terlepas dari nilai properti akhir Status antecedent. Jika kelanjutannya adalah tugas anak, tugas tersebut dibuat sebagai tugas berlapis yang dilepaskan.

PreferFairness 1

Petunjuk untuk TaskScheduler menjadwalkan tugas dalam urutan dijadwalkan, sehingga tugas yang dijadwalkan lebih cepat lebih mungkin berjalan lebih cepat, dan tugas yang dijadwalkan nanti lebih mungkin dijalankan nanti.

LongRunning 2

Menentukan bahwa kelanjutan akan menjadi operasi yang berjalan lama dan bersangkutan. Ini memberikan petunjuk bahwa TaskScheduler oversubscription dapat dijadikan jaminan.

AttachedToParent 4

Menentukan bahwa kelanjutan, jika itu adalah tugas anak, dilampirkan ke induk dalam hierarki tugas. Kelanjutannya bisa menjadi tugas anak hanya jika antecedent-nya juga merupakan tugas anak. Secara default, tugas anak (yaitu, tugas dalam yang dibuat oleh tugas luar) dijalankan secara independen dari induknya. Anda dapat menggunakan AttachedToParent opsi sehingga tugas induk dan anak disinkronkan.

Perhatikan bahwa jika tugas induk dikonfigurasi dengan DenyChildAttach opsi , AttachedToParent opsi dalam tugas anak tidak berpengaruh, dan tugas anak akan dijalankan sebagai tugas turunan yang dilepaskan.

Untuk informasi selengkapnya, lihat Tugas Anak yang Terlampir dan yang Tidak Terlampir.

DenyChildAttach 8

Menentukan bahwa tugas anak apa pun (yaitu, tugas dalam berlapis apa pun yang dibuat oleh kelanjutan ini) yang dibuat dengan AttachedToParent opsi dan upaya untuk menjalankan sebagai tugas turunan terlampir tidak akan dapat melampirkan ke tugas induk dan akan dijalankan sebagai tugas turunan yang terlepas. Untuk informasi selengkapnya, lihat Tugas Anak yang Terlampir dan yang Tidak Terlampir.

HideScheduler 16

Menentukan bahwa tugas yang dibuat oleh kelanjutan dengan memanggil metode seperti Run(Action) atau ContinueWith(Action<Task>) melihat penjadwal default (Default) daripada penjadwal tempat kelanjutan ini berjalan sebagai penjadwal saat ini.

LazyCancellation 32

Dalam kasus pembatalan kelanjutan, mencegah penyelesaian kelanjutan hingga antecedent selesai.

RunContinuationsAsynchronously 64

Menentukan bahwa tugas kelanjutan harus dijalankan secara asinkron. Opsi ini lebih diutamakan daripada ExecuteSynchronously.

NotOnRanToCompletion 65536

Menentukan bahwa tugas kelanjutan tidak boleh dijadwalkan jika antecedent-nya berjalan hingga selesai. Antecedent berjalan hingga selesai jika propertinya Status setelah selesai adalah RanToCompletion. Opsi ini tidak valid untuk kelanjutan multi-tugas.

NotOnFaulted 131072

Menentukan bahwa tugas kelanjutan tidak boleh dijadwalkan jika antecedent-nya melemparkan pengecualian yang tidak tertangani. Antecedent melempar pengecualian yang tidak tertangani jika propertinya Status setelah selesai adalah Faulted. Opsi ini tidak valid untuk kelanjutan multi-tugas.

OnlyOnCanceled 196608

Menentukan bahwa kelanjutan harus dijadwalkan hanya jika antecedent-nya dibatalkan. Antecedent dibatalkan jika propertinya Status setelah selesai adalah Canceled. Opsi ini tidak valid untuk kelanjutan multi-tugas.

NotOnCanceled 262144

Menentukan bahwa tugas kelanjutan tidak boleh dijadwalkan jika antecedent-nya dibatalkan. Antecedent dibatalkan jika propertinya Status setelah selesai adalah Canceled. Opsi ini tidak valid untuk kelanjutan multi-tugas.

OnlyOnFaulted 327680

Menentukan bahwa tugas kelanjutan harus dijadwalkan hanya jika antecedent-nya melemparkan pengecualian yang tidak tertangani. Antecedent melempar pengecualian yang tidak tertangani jika propertinya Status setelah selesai adalah Faulted.

Opsi OnlyOnFaulted menjamin bahwa Exception properti dalam antecedent bukan null. Anda dapat menggunakan properti tersebut untuk menangkap pengecualian dan melihat pengecualian mana yang menyebabkan tugas rusak. Jika Anda tidak mengakses Exception properti, pengecualian tidak tertangani. Selain itu, jika Anda mencoba mengakses Result properti tugas yang telah dibatalkan atau telah rusak, pengecualian baru akan dilemparkan.

Opsi ini tidak valid untuk kelanjutan multi-tugas.

OnlyOnRanToCompletion 393216

Menentukan bahwa kelanjutan harus dijadwalkan hanya jika antecedent-nya berjalan hingga selesai. Antecedent berjalan hingga selesai jika propertinya Status setelah selesai adalah RanToCompletion. Opsi ini tidak valid untuk kelanjutan multi-tugas.

ExecuteSynchronously 524288

Menentukan bahwa tugas kelanjutan harus dijalankan secara sinkron. Dengan opsi ini ditentukan, kelanjutan berjalan pada utas yang sama yang menyebabkan tugas antecedent beralih ke status akhirnya. Jika antecedent sudah selesai ketika kelanjutan dibuat, kelanjutan akan berjalan pada utas yang membuat kelanjutan. Jika CancellationTokenSource antecedent dibuang dalam blok finally (Finally di Visual Basic), kelanjutan dengan opsi ini akan berjalan di blok finally. Hanya kelanjutan yang sangat singkat yang harus dijalankan secara sinkron.

Karena tugas dijalankan secara sinkron, tidak perlu memanggil metode seperti Wait() untuk memastikan bahwa utas panggilan menunggu tugas selesai.

Berlaku untuk