dapatkah itu sepenuhnya menggantikan cara lama menggunakan Threads?
Tidak. Sebuah utas dapat melakukan lebih banyak hal berguna. Await dirancang khusus untuk menangani sesuatu yang memakan waktu, biasanya permintaan I / O. Yang secara tradisional dilakukan dengan callback ketika permintaan I / O selesai. Menulis kode yang mengandalkan callback ini cukup sulit, menunggu sangat menyederhanakannya.
mampu melakukan apa pun yang dapat dilakukan Thread secara asinkron?
Kurang lebih. Await hanya menangani menangani penundaan, itu tidak melakukan apa pun yang dilakukan utas. Ekspresi await , apa yang ada di sebelah kanan kata kunci await, adalah apa yang menyelesaikan pekerjaan. Idealnya itu tidak menggunakan utas sama sekali, itu memposting permintaan driver dan setelah driver menyelesaikan transfer data itu menghasilkan panggilan balik pemberitahuan penyelesaian. Jaringan sejauh ini merupakan penggunaan yang paling umum, latensi ratusan milidetik adalah umum dan efek samping yang tak terhindarkan dari layanan yang berpindah dari desktop atau LAN ke "cloud". Menggunakan layanan seperti itu secara sinkron 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. Metode XxxxAsync () hanyalah yang telah dibuat sebelumnya dalam kerangka .NET untuk operasi umum yang membutuhkan waktu. Seperti mengunduh data dari server web.