Aplikasi responsif tidak boleh menunggu: permintaan jaringan, baca file, dan query database memakan waktu tanpa menggunakan CPU. Model async/await C# memungkinkan thread tetap produktif selama operasi berlangsung. Section ini membahas Task, await, komposisi, cancellation, hingga jebakan deadlock yang umum.
Memahami perbedaan model eksekusi sinkron dan asinkron serta alasan operasi yang banyak menunggu sebaiknya ditulis asinkron.
Buka → # Task dan Task<T>Mengenal Task sebagai janji pekerjaan asinkron dan Task<T> untuk pekerjaan yang mengembalikan nilai.
Buka → # Async dan AwaitMemahami cara kata kunci async dan await membagi method menjadi bagian sebelum dan sesudah titik tunggu.
Buka → # Task Return TypesMemilih return type yang tepat untuk method asinkron: Task, Task<T>, ValueTask<T>, dan kasus async void yang sebaiknya dihindari.
Buka → # Task CompositionMerangkai beberapa operasi asinkron menjadi satu alur dengan await berantai dan lanjutan ContinueWith.
Buka → # Task.WhenAll dan WhenAnyMenjalankan banyak task serentak dengan Task.WhenAll dan merespons task pertama yang selesai dengan Task.WhenAny.
Buka → # Cancellation TokenMenghentikan operasi asinkron secara terkoordinasi dengan CancellationTokenSource dan CancellationToken.
Buka → # Exception dalam AsyncMemahami cara exception asinkron tersimpan di dalam Task dan dilempar ulang saat await, termasuk perilaku Task.WhenAll.
Buka → # Async StreamsMengonsumsi data yang datang seiring waktu dengan await foreach dan IAsyncEnumerable<T>.
Buka → # IAsyncEnumerableMembongkar anatomi IAsyncEnumerable<T> dan IAsyncEnumerator<T> di balik await foreach.
Buka → # Async IteratorsMenulis produsen data asinkron dengan yield return di dalam method async yang mengembalikan IAsyncEnumerable<T>.
Buka → # Asynchronous File IOMembaca dan menulis berkas secara asinkron dengan API File async dan FileStream useAsync.
Buka → # Asynchronous HTTPMemanggil API HTTP tanpa menahan thread menggunakan HttpClient dan pasangan method asinkronnya.
Buka → # Synchronization ContextMemahami ke mana eksekusi kembali setelah await dan peran SynchronizationContext serta ConfigureAwait(false).
Buka → # Deadlock dan Common MistakesMemahami kebuntuan klasik akibat .Result dan .Wait() pada aplikasi UI secara konseptual, beserta daftar kesalahan umum asinkron.
Buka → # Async Best PracticesKumpulan praktik terbaik menulis kode asinkron: async sampai ke atas, teruskan CancellationToken, dan hindari pemblokiran.
Buka → # Asynchronous PerformanceMenilai performa kode asinkron dari tingkat konkurensi dan alokasi, serta keputusan teknis yang memengaruhinya.
Buka →