Với một phương pháp async:Chuỗi cuộc gọi cho async/await ... đang chờ đợi sự chờ đợi hoặc trả lại những gì đang chờ đợi?
public async Task<int> InnerAsync()
{
await Task.Delay(1000);
return 123;
}
Và gọi đó là thông qua một phương pháp trung gian, phương pháp trung gian nên chờ đợi các phương pháp async (IntermediateA) hoặc chỉ đơn thuần là trả lại Task (IntermediateB)?
pubic async Task<int> IntermediateA()
{
return await InnerAsync();
}
private Task<int> IntermediateB()
{
return InnerAsync();
}
Như tốt nhất tôi có thể nói với các chương trình gỡ rối, cả hai xuất hiện để làm việc giống hệt nhau, nhưng có vẻ như với tôi rằng IntermediateB nên thực hiện tốt hơn bằng cách tránh một entry chờ đợi ở những máy nhà nước.
Đúng không?
Sự khác biệt là trong xử lý ngoại lệ. Để hiểu rằng tốt hơn tôi đề nghị bạn thử ném một ngoại lệ từ hàm bên trong và xem cách mọi thứ hoạt động. –
Cảm ơn bạn. Tôi đã không xem xét xử lý ngoại lệ ở tất cả. – MikeZ
"có vẻ như với tôi rằng IntermediateB nên thực hiện tốt hơn" - có, nhưng sự khác biệt sẽ là một vài nano giây. Nó cũng có thể tiết kiệm một vài chục byte trong nhị phân được tạo ra. –