ภายใต้สถานการณ์ใดที่เราจะต้องการใช้
public async Task AsyncMethod(int num)
แทน
public async void AsyncMethod(int num)
สถานการณ์เดียวที่ฉันนึกออกคือถ้าคุณต้องการให้ภารกิจติดตามความคืบหน้า
นอกจากนี้ในวิธีต่อไปนี้ async และรอคำสำคัญไม่จำเป็นหรือไม่
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
Thread.Sleepกับงานที่คุณควรทำawait Task.Delay(num)แทน
Task.Delayไม่Task.AsyncDelayเป็นเช่นเดียวกับวิธีการทั้งหมดในงานเป็น Async
async void async Taskวิธีการที่ล้มเหลวเพราะมันใช้วัตถุบริบท Entity Framework ประกาศเป็นสมาชิกของตัวควบคุมถูกกำจัดก่อนที่วิธีการเสร็จสิ้นการดำเนินการ เฟรมเวิร์กจะกำจัดคอนโทรลเลอร์ก่อนที่เมธอดจะดำเนินการเสร็จสิ้น ฉันเปลี่ยนวิธีการเป็น async Task และใช้งานได้
Foo()FooAsync()