asyncวิธีการแตกต่างจากวิธีการปกติ ไม่ว่าคุณจะกลับมาจากasyncวิธีการใดก็ตามจะห่อด้วยไฟล์Task.
หากคุณไม่ส่งคืนค่า (เป็นโมฆะ) จะถูกห่อไว้Taskหากคุณส่งคืนintจะถูกห่อด้วยTask<int>และอื่น ๆ
หากวิธีการ async ของคุณจำเป็นต้องส่งคืนintคุณจะต้องทำเครื่องหมายประเภทการส่งคืนของวิธีการเป็นTask<int>และคุณจะส่งคืนแบบธรรมดาintไม่ใช่Task<int>. คอมไพเลอร์จะแปลงไฟล์intให้Task<int>คุณ
private async Task<int> MethodName()
{
await SomethingAsync();
return 42;//Note we return int not Task<int> and that compiles
}
Sameway เมื่อคุณส่งTask<object>คืนประเภทผลตอบแทนของวิธีการของคุณควรเป็นTask<Task<object>>
public async Task<Task<object>> MethodName()
{
return Task.FromResult<object>(null);//This will compile
}
เนื่องจากวิธีของคุณกำลังส่งคืนTaskจึงไม่ควรส่งคืนค่าใด ๆ มิฉะนั้นจะไม่รวบรวม
public async Task MethodName()
{
return;//This should work but return is redundant and also method is useless.
}
เก็บไว้ในใจว่าวิธี async โดยไม่ต้องมีคำสั่งไม่ได้awaitasync