내가 이와 같은 방법을 말해봐 :비동기 함수에서 왜 내가 기다려야합니까?
private async Task SomeMethod()
{
await DoSomethingAsync();
await DoSomethingElseAsync();
return;
}
는 DoSomethingElseAsync
당신이 할 수있을 것 같은 Task
이는 것 같다 반환을 감안할 때 :
private async Task SomeMethod()
{
await DoSomethingAsync();
return DoSomethingElseAsync();
}
을하지만, 컴파일러는 이것에 대해 불평 :
를'
SomeMethod
'이 (가) 'Task
'을 반환하는 비동기 메소드이므로 return 키워드는 객체 표현이 뒤따라야합니다. 'Task<T>
'을 반환 하시겠습니까?
왜 그렇습니까?
@YvetteColomb *이 질문과 정확히 일치하지 않습니다. 영업 사원은 기다릴 시간을 묻지 않습니다. 이 질문에'왜 내가 태스크를 반환 할 수 없습니까? '라고 묻습니다. –
@YvetteColomb 이것은 중복되지 않습니다. 당신이 말하는 질문은 기다리는 시간을 사용하는 것입니다.이 두 번째 방법은 왜 기다리는 쓰지 않고 돌아갈 수 없는지 묻습니다. 이 두 가지를 다른 것으로 식별하는 것은 매우 분명합니다. –
첫 번째'DoSomethingAsync();'가 완료되기 전에 메서드가 이미 호출자에게 반환되었습니다 (결국 비동기 메서드입니다). 따라서'await' 후에 특정 값을 반환 할 수있는 방법이 없습니다. 호출자는 이미이 시점에서 반환 값을 받고 앞으로 이동했습니다. – Evk