Hangi senaryolarda kullanmak istersiniz
public async Task AsyncMethod(int num)
onun yerine
public async void AsyncMethod(int num)
Düşünebileceğim tek senaryo, ilerlemesini takip edebilmek için göreve ihtiyacınız varsa.
Ayrıca, aşağıdaki yöntemde, zaman uyumsuz ve bekleyen anahtar kelimeler gereksiz mi?
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
Thread.Sleep
görevlerinizle birlikte kullanmamanız gereken bir notawait Task.Delay(num)
Task.Delay
olmadığı Task.AsyncDelay
gibi
async void
yerine ilan edildi async Task
. Yöntem, denetleyicinin bir üyesi olarak bildirilen bir Entity Framework bağlam nesnesi kullandığından, yöntem, yürütme işlemi tamamlanmadan önce atılmış olduğu için çöktü. Çerçeve, denetleyiciyi yöntemi yürütülmeden bitirdi. Yöntemi zaman uyumsuz Görev olarak değiştirdim ve işe yaradı.
Foo()
gerektiğini unutmayın.Örnek olurFooAsync()
.