Di bawah skenario apa yang ingin digunakan seseorang
public async Task AsyncMethod(int num)
dari pada
public async void AsyncMethod(int num)
Satu-satunya skenario yang bisa saya pikirkan adalah jika Anda membutuhkan tugas untuk dapat melacak kemajuannya.
Selain itu, dalam metode berikut, apakah async dan menunggu kata kunci tidak perlu?
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
Thread.Sleep
dengan tugas-tugas Anda, Anda harus await Task.Delay(num)
sebaliknya
Task.Delay
adalah tidak Task.AsyncDelay
semua metode dalam tugas adalah Async
async void
gantinya async Task
. Metode macet karena menggunakan objek konteks Kerangka Entitas yang dideklarasikan sebagai anggota controller dibuang sebelum metode selesai dieksekusi. Kerangka kerja membuang controller sebelum metode selesai dieksekusi. Saya mengubah metode menjadi Tugas async dan berhasil.
Foo()
akan menjadiFooAsync()
.