ภายใต้สถานการณ์ใดที่เราจะต้องการใช้
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()