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.

# Synchronous vs Asynchronous

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 Await

Memahami cara kata kunci async dan await membagi method menjadi bagian sebelum dan sesudah titik tunggu.

Buka →
# Task Return Types

Memilih return type yang tepat untuk method asinkron: Task, Task<T>, ValueTask<T>, dan kasus async void yang sebaiknya dihindari.

Buka →
# Task Composition

Merangkai beberapa operasi asinkron menjadi satu alur dengan await berantai dan lanjutan ContinueWith.

Buka →
# Task.WhenAll dan WhenAny

Menjalankan banyak task serentak dengan Task.WhenAll dan merespons task pertama yang selesai dengan Task.WhenAny.

Buka →
# Cancellation Token

Menghentikan operasi asinkron secara terkoordinasi dengan CancellationTokenSource dan CancellationToken.

Buka →
# Exception dalam Async

Memahami cara exception asinkron tersimpan di dalam Task dan dilempar ulang saat await, termasuk perilaku Task.WhenAll.

Buka →
# Async Streams

Mengonsumsi data yang datang seiring waktu dengan await foreach dan IAsyncEnumerable<T>.

Buka →
# IAsyncEnumerable

Membongkar anatomi IAsyncEnumerable<T> dan IAsyncEnumerator<T> di balik await foreach.

Buka →
# Async Iterators

Menulis produsen data asinkron dengan yield return di dalam method async yang mengembalikan IAsyncEnumerable<T>.

Buka →
# Asynchronous File IO

Membaca dan menulis berkas secara asinkron dengan API File async dan FileStream useAsync.

Buka →
# Asynchronous HTTP

Memanggil API HTTP tanpa menahan thread menggunakan HttpClient dan pasangan method asinkronnya.

Buka →
# Synchronization Context

Memahami ke mana eksekusi kembali setelah await dan peran SynchronizationContext serta ConfigureAwait(false).

Buka →
# Deadlock dan Common Mistakes

Memahami kebuntuan klasik akibat .Result dan .Wait() pada aplikasi UI secara konseptual, beserta daftar kesalahan umum asinkron.

Buka →
# Async Best Practices

Kumpulan praktik terbaik menulis kode asinkron: async sampai ke atas, teruskan CancellationToken, dan hindari pemblokiran.

Buka →
# Asynchronous Performance

Menilai performa kode asinkron dari tingkat konkurensi dan alokasi, serta keputusan teknis yang memengaruhinya.

Buka →