Penjelasan terperinci tentang penggunaan Task.Start()
, Task.Run()
dan Task.Factory.StartNew()
dalam Task Parallel Library (TPL)
Pustaka Selari Tugas (TPL) menyediakan berbilang kaedah untuk mencipta dan melancarkan tugas, termasuk Task.Start()
, Task.Run()
dan Task.Factory.StartNew()
. Walaupun kedua-duanya digunakan untuk melakukan operasi tak segerak, terdapat perbezaan yang ketara dalam penggunaan.
Task.Start()
: Kaedah lapuk
Task.Start()
ialah pendekatan lama yang memerlukan penciptaan eksplisit objek Tugas sebelum memulakan tugas. Ia membenarkan menentukan pilihan tambahan melalui parameter TaskCreationOptions
. Walau bagaimanapun, adalah disyorkan untuk menggunakan Task.Run()
dan Task.Factory.StartNew()
sebaliknya.
Task.Run()
: Pilihan ringkas
Task.Run()
ialah kaedah ringkas yang secara dalaman menggunakan Task.Factory.StartNew()
dengan parameter lalai. Ia direka untuk senario mudah yang tidak memerlukan pilihan tugas tersuai. Tidak seperti Task.Start()
, ia tidak memerlukan objek Tugas dibuat sebelum bermula.
Task.Factory.StartNew()
: Pilihan serba boleh
Task.Factory.StartNew()
ialah kaedah yang paling biasa. Ia menyediakan pilihan untuk menyesuaikan penciptaan tugas, seperti menentukan TaskScheduler
, CancellationToken
dan TaskCreationOptions
. Ini membolehkan kawalan terperinci ke atas pelaksanaan tugas.
Pilih kaedah yang sesuai
Task.Run()
jika tetapan lalai mencukupi. TaskScheduler
apabila anda memerlukan pilihan tugas tersuai (seperti menetapkan Task.Factory.StartNew()
atau mengawal pertalian benang). Task.Start()
harus dielakkan melainkan terdapat keperluan khusus untuk penyesuaian tugas lanjutan. Contoh penggunaan
Coretan kod berikut menggambarkan penggunaan kaedah ini:
<code class="language-csharp">// Task.Start() var task = new Task(() => Console.WriteLine("Task started.")); task.Start(); // Task.Run() Task.Run(() => Console.WriteLine("Task started.")); // Task.Factory.StartNew() var task = Task.Factory.StartNew( () => Console.WriteLine("Task started."), TaskCreationOptions.PreferFairness);</code>
Kesimpulan
Walaupun Task.Start()
, Task.Run()
dan Task.Factory.StartNew()
mempunyai kefungsian yang serupa, penggunaannya hendaklah berdasarkan keperluan khusus aplikasi anda. Task.Run()
sesuai untuk kebanyakan senario biasa, manakala Task.Factory.StartNew()
menawarkan pilihan penyesuaian lanjutan. Disebabkan sifatnya yang tidak digunakan lagi, menggunakan Task.Start()
biasanya tidak disyorkan.
Atas ialah kandungan terperinci Task.Start(), Task.Run(), dan Task.Factory.StartNew(): Kaedah Mana Yang Perlu Saya Gunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!