Ich stieß auf den folgenden Code, der die ContinueWith() verwendet, um auf das Ergebnis warten.Verwenden ContinueWith() für eine erwartete Aufgabe und Aufruf von Task.Result innerhalb
public async Task<User> GetUser()
{
return await _serviceRepo.GetUserAsync()
.ContinueWith(task =>
{
return task.Result;
});
}
blockiert die ContinueWith()
den aufrufenden Thread, bis Aufgabe kehrt von der GetUserAsync()
Anruf?
Da die task.Result
innerhalb der ContinueWith() ist, die geplant ist, wird alles während des Wartens auf den Vorgänger task
blockiert?
Ich habe diese Art von Code in einigen anderen Orten gesehen, ist dies eine Best Practice für die async/erwarten Muster? Ich würde erwarten, dass der GetUserAsync()
Anruf das Ergebnis zurückgibt, als mit einem ContinueWith()
darauf zu warten.
Sie verwenden 'ContinueWith' nicht bei der erwarteten' Task'. Sie warten auf die Fortsetzung 'Aufgabe', die mit' ContinueWith' erstellt wurde. BTW, warum nicht verwenden Sie öffentliche Aufgabe GetUser() => _serviceRepo.GetUserAsync(); ' –
PetSerAl
Es gibt keinen Grund, es so zu tun. Sie können async, await und ContinueWith vollständig entfernen. – Evk