Task.Start/Wait vs. Async/Await: Apakah perbezaannya?
Dalam dunia pengaturcaraan tak segerak, adalah penting untuk memahami perbezaan antara kaedah segerak menggunakan Task.Start/Wait dan kaedah tak segerak menggunakan Async/Await.
Sila lihat coretan kod berikut:
<code class="language-csharp">public void MyMethod() { Task t = Task.Factory.StartNew(DoSomethingThatTakesTime); t.Wait(); UpdateLabelToSayItsComplete(); } public async void MyMethod() { var result = Task.Factory.StartNew(DoSomethingThatTakesTime); await result; UpdateLabelToSayItsComplete(); }</code>
Dalam coretan kod pertama, kami menggunakan kaedah penyegerakan Task.Mula/Tunggu tradisional. Begini cara ia berfungsi:
Sebaliknya, coretan kod kedua menunjukkan pendekatan tak segerak menggunakan Async/Await:
Perbezaan utama antara kedua-dua kaedah ini ialah kelakuan benang semasa tugasan sedang dijalankan. Dengan Task.Start/Tunggu, urutan disekat dan tidak boleh bertindak balas kepada acara lain. Sebaliknya, Async/Await membenarkan urutan untuk melaksanakan tugas lain sambil menunggu jawapan.
Bayangkan memesan makan tengah hari di restoran. Gunakan Task.Mula/Tunggu seperti mengabaikan orang yang duduk di sebelah anda sebelum anda makan. Menggunakan Async/Await, ia seperti meneruskan perbualan dengan rakan sementara anda menunggu sup dihidangkan. Kerja latar belakang masih berlaku, tetapi urutan anda boleh melakukan operasi lain sementara menunggu keputusan.
Atas ialah kandungan terperinci Task.Start/Wait vs. Async/Await: Apakah Perbezaan Utama dalam Pengaturcaraan Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!