Pertanyaan Async / Wait vs Threads


Di. Net 4.5 Microsoft telah menambahkan yang baru Async/Await fitur untuk menyederhanakan pengkodean asynchronous. Namun, saya bertanya-tanya

  1. Bisa Async/Await sepenuhnya menggantikan cara lama menggunakan Threads?
  2. Aku s Async/Await mampu melakukan apa pun Thread bisa lakukan asynchronous?
  3. Bisa Async/Await hanya digunakan dengan beberapa metode seperti WebClient.DownloadStringAsync atau dapatkah saya mengonversi metode sinkron apa pun untuk membuatnya digunakan Async/Await dan tidak memblokir utas utama?

76
2018-03-01 01:23


asal


Jawaban:


dapatkah itu sepenuhnya menggantikan cara lama menggunakan Thread?

Tidak. Sebuah utas dapat melakukan banyak hal yang berguna. Menunggu dirancang khusus untuk ditangani sesuatu meluangkan waktu, sebagian besar biasanya permintaan I / O. Yang secara tradisional dilakukan dengan callback ketika permintaan I / O selesai. Menulis kode yang bergantung pada callback ini cukup sulit, menunggu sangat menyederhanakannya.

mampu melakukan apa yang pernah dilakukan Thread secara asynchronous?

Kurang lebih. Menunggu hanya mengurus berurusan dengan penundaan, itu tidak melakukan apa pun yang dilakukan sebuah thread. Menunggu ekspresi, apa yang ada di sebelah kanan kata kunci menunggu, adalah apa yang membuat pekerjaan selesai. Idealnya tidak menggunakan thread sama sekali, itu posting permintaan driver dan setelah driver menyelesaikan transfer data itu menghasilkan callback pemberitahuan selesai. Networking sejauh ini merupakan penggunaan yang paling umum, latensi ratusan milidetik adalah hal yang umum dan efek samping yang tak terelakkan dari layanan yang bergerak dari desktop atau LAN ke "cloud". Menggunakan layanan semacam itu secara serentak akan membuat UI menjadi tidak responsif.

hanya dapat digunakan dengan beberapa metode seperti WebClient.DownloadStringAsync

Tidak. Anda dapat menggunakannya dengan metode apa pun yang mengembalikan Tugas. The XxxxAsync () metode hanya yang telah matang dalam. NET framework untuk operasi umum yang membutuhkan waktu. Seperti mengunduh data dari server web.


55
2018-03-01 02:34



Pernyataan resmi tentang ini. Meskipun Anda harus memahami perbedaan antara untaian dan pemrograman asinkron sebelum secara sembarangan mengganti satu hal dengan yang lain.


12
2018-03-01 02:12