내 Task.Result를 호출하여 결과를 기다리는 데 ContinueWith()를 사용하는 다음 코드를 발견했습니다.기다려온 작업에 ContinueWith()를 사용하고
public async Task<User> GetUser()
{
return await _serviceRepo.GetUserAsync()
.ContinueWith(task =>
{
return task.Result;
});
}
는 ContinueWith()
는 GetUserAsync()
통화에서 작업 반환 될 때까지 호출 스레드를 차단합니까?
task.Result
이 예약 된 ContinueWith() 안에 있기 때문에 전주를 기다리는 동안 차단되는 것이 있습니까? task
?
다른 유형의 코드에서이 유형의 코드를 보았습니다. 이것이 비동기/대기 패턴의 모범 사례로 간주됩니까? GetUserAsync()
호출은 ContinueWith()
을 사용하는 것보다 결과를 반환 할 것으로 기대합니다.
대기중인'작업'에'ContinueWith'를 사용하고 있지 않습니다. 'ContinueWith'에 의해 생성 된 연속'작업'을 기다리고 있습니다. BTW, 왜 공용 작업을 사용하지 마십시오 GetUser() => _serviceRepo.GetUserAsync(); ' –
PetSerAl
이렇게 할 이유가 없습니다. 비동기, 대기 및 계속 대기를 완전히 제거 할 수 있습니다. – Evk