tôi sau await hướng dẫn trên MSDN, và tôi đang cố gắng tìm ra sự khác biệt giữa việc sử dụng await
như một tuyên bố so với sử dụng await
như là một biểu . Toàn bộ điều không mong đợi này đang uốn cong tâm trí của tôi và tôi không thể tìm thấy bất kỳ ví dụ nào cho trường hợp cụ thể này.đang chờ đợi tuyên bố vs biểu
Về cơ bản, tôi muốn xem cách sử dụng nhiều await
s một cách không đồng bộ, có nghĩa là tôi không muốn phải chờ cho người đầu tiên hoàn thành trước khi lần thứ hai bắt đầu. Này, với tôi, đánh bại mục đích của sự không đồng bộ để bắt đầu với:
private async void button1_Click(object sender, EventArgs e)
{
// Using await as an expression
string result_a = await WaitAsynchronouslyAsync();
string result_b = await WaitAsynchronouslyAsync();
// This takes six seconds to appear
textBox1.Text = result_a + Environment.NewLine;
textBox1.Text += result_b;
}
public async Task<string> WaitAsynchronouslyAsync()
{
await Task.Delay(3000);
return "Finished";
}
Tuy nhiên, với một sự thay đổi tinh tế nó chỉ mất 3 giây tổng cho hai "Finished" s xuất hiện, đó là những gì tôi muốn - hai số await
s chạy thực sự không đồng bộ:
private async void button1_Click(object sender, EventArgs e)
{
var a = WaitAsynchronouslyAsync();
var b = WaitAsynchronouslyAsync();
// Using await as a statement
await a;
await b;
// This takes three seconds to appear
textBox1.Text = a.Result + Environment.NewLine;
textBox1.Text += b.Result;
}
Câu hỏi của tôi là, tại sao các hành vi này khác? Tôi đang thiếu điểm tinh tế nào ở đây?
Chỉnh sửa cuối cùng của bạn đã khiến tôi nhận ra, cảm ơn - giải trình tự là vấn đề. Tôi nên nhận ra rằng cả hai đều là biểu cảm. –