Saya sedang menulis aplikasi terikat jaringan berdasarkan paradigma menunggu / tidur.
Terkadang, kesalahan koneksi terjadi, dan menurut pengalaman saya, sebaiknya menunggu beberapa saat dan kemudian mencoba kembali operasi.
Masalahnya adalah jika saya menggunakan Thread.Sleep atau operasi pemblokiran serupa lainnya di await / async, ini akan memblokir semua aktivitas di thread pemanggil.
Dengan apa saya harus mengganti Thread.Sleep (10000) untuk mendapatkan efek yang sama seperti
await Thread.SleepAsync(10000)
?
MEMPERBARUI
Saya lebih suka jawaban yang melakukan ini tanpa membuat utas tambahan
sumber
async
pengantar saya bermanfaat. Ketika awaitable dikembalikan olehTask.Delay
yangawait
ed, karena itu tidak lengkap, metode saat mengembalikan sebuah tugas yang tidak lengkap. Nanti, ketikaDelay
selesai (off timer, bukan thread), sisa metode dijadwalkan untuk dijalankan. Kelanjutan berjalan dalam "konteks" yang dapat kembali ke utas asli yang sama - detail di blog saya.await
dijadwalkan (akhirnya).