나는 MSDN에 await 자습서를 따라하고있어 대 문을 기다리고, 그리고 나는 표현로 await
를 사용하여 대 문로 await
를 사용 사이의 차이를 알아 내려고 노력하고있어. 이 전체 비동기식 기다림은 내 마음을 굽히는 것이므로이 특별한 경우에 대한 예제를 찾을 수 없습니다.표현
기본적으로 여러 개의 await
을 비동기 적으로 사용하는 방법을 알고 싶었습니다. 즉, 두 번째 것이 시작되기 전에 완료 할 때까지 기다릴 필요가 없다는 것을 의미합니다. 그것은 단지 내가 원하는 것 무엇을 표시 할 수있는 두 개의 "완료"의, 총 3 초 소요 미묘한 변화,
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";
}
그러나이 나에게로 시작하는 비동기의 목적을 패배 - 두 await
의 진정한 비동기 적으로 실행 :
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;
}
내 질문은, 왜이 다르게 행동합니까? 여기에 미묘한 점이 있습니까?
귀하의 마지막 편집이 나를 깨닫게 감사를 표시 - 시퀀싱이 문제입니다. 나는 그들이 둘 다 표현이라는 것을 깨달았어야했다. –