Rumah > pembangunan bahagian belakang > C++ > Task.Start(), Task.Run(), dan Task.Factory.StartNew(): Kaedah Mana Yang Perlu Saya Gunakan?

Task.Start(), Task.Run(), dan Task.Factory.StartNew(): Kaedah Mana Yang Perlu Saya Gunakan?

Mary-Kate Olsen
Lepaskan: 2025-01-12 08:43:43
asal
329 orang telah melayarinya

Task.Start(), Task.Run(), and Task.Factory.StartNew(): Which Method Should I Use?

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

  • Untuk senario mudah, gunakan Task.Run() jika tetapan lalai mencukupi.
  • Gunakan TaskScheduler apabila anda memerlukan pilihan tugas tersuai (seperti menetapkan Task.Factory.StartNew() atau mengawal pertalian benang).
  • Penggunaan 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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan