Bahasa

TaskScheduler.TryExecuteTaskInline(Task, Boolean) Metode

Definisi

Menentukan apakah yang disediakan Task dapat dijalankan secara sinkron dalam panggilan ini, dan jika bisa, menjalankannya.

protected:
 abstract bool TryExecuteTaskInline(System::Threading::Tasks::Task ^ task, bool taskWasPreviouslyQueued);
[System.Security.SecurityCritical]
protected abstract bool TryExecuteTaskInline(System.Threading.Tasks.Task task, bool taskWasPreviouslyQueued);
protected abstract bool TryExecuteTaskInline(System.Threading.Tasks.Task task, bool taskWasPreviouslyQueued);
[<System.Security.SecurityCritical>]
abstract member TryExecuteTaskInline : System.Threading.Tasks.Task * bool -> bool
abstract member TryExecuteTaskInline : System.Threading.Tasks.Task * bool -> bool
Protected MustOverride Function TryExecuteTaskInline (task As Task, taskWasPreviouslyQueued As Boolean) As Boolean

Parameter

task
Task

yang Task akan dieksekusi.

taskWasPreviouslyQueued
Boolean

Boolean yang menunjukkan apakah tugas sebelumnya telah diantrekan atau tidak. Jika parameter ini True, maka tugas mungkin sebelumnya telah diantrekan (terjadwal); jika False, maka tugas diketahui belum diantrekan, dan panggilan ini sedang dilakukan untuk menjalankan tugas sebaris tanpa mengantrekannya.

Mengembalikan

Nilai Boolean yang menunjukkan apakah tugas dijalankan sebaris.

Atribut

Pengecualian

Argumen task null.

Sudah task dijalankan.

Keterangan

Kelas yang berasal dari TaskScheduler mengimplementasikan fungsi ini untuk mendukung eksekusi tugas sebaris pada utas yang memulai tunggu pada objek tugas tersebut. Eksekusi sebaris bersifat opsional, dan permintaan dapat ditolak dengan mengembalikan false. Namun, semakin banyak tugas yang dapat di-inlin, semakin baik penjadwal akan menskalakan. Bahkan, penjadwal yang sebaris terlalu sedikit mungkin rentan terhadap kebuntuan. Implementasi yang tepat harus memastikan bahwa permintaan yang dijalankan berdasarkan kebijakan yang dijamin oleh penjadwal dapat berhasil sebaris. Misalnya, jika penjadwal menggunakan utas khusus untuk menjalankan tugas, setiap permintaan inlining dari utas tersebut harus berhasil.

Jika penjadwal memutuskan untuk melakukan eksekusi sebaris, penjadwal harus melakukannya dengan memanggil metode TaskScheduler TryExecuteTask dasar dengan objek tugas yang disediakan, menyebarkan nilai pengembalian. Mungkin juga sesuai bagi penjadwal untuk menghapus tugas yang di-inlin dari struktur data internalnya jika memutuskan untuk mematuhi permintaan inlining. Namun, perhatikan bahwa dalam beberapa keadaan, penjadwal mungkin diminta untuk menggariskan tugas yang sebelumnya tidak diberikan kepadanya dengan metode .QueueTask

Penjadwal turunan bertanggung jawab untuk memastikan bahwa utas panggilan cocok untuk menjalankan tugas yang diberikan sejauh kebijakan penjadwalan dan eksekusinya sendiri.

Untuk informasi selengkapnya, lihat TaskScheduler .

Berlaku untuk

Lihat juga