Dois-je attendre ReadAsStringAsync() si j'ai attendu la réponse que je joue ReadAsStringAsync ()?

Dois-je attendent ReadAsStringAsync() si je attendu la réponse sur laquelle je joue ReadAsStringAsync()? Pour clarifier davantage, quelle est la différence ou le droit chemin entre la suite? Sont-ils effectivement la même chose?

var response = await httpClient.GetAsync("something");
var content = await response.Content.ReadAsStringAsync();
return new AvailableViewingTimesMapper().Map(content);

OU

var response = await httpClient.GetAsync("something");
var content = response.Content.ReadAsStringAsync();
return new AvailableViewingTimesMapper().Map(content.Result);
Je pense que vous ne faites var content = response.Content.ReadAsStringAsync(); si tu voulais faire quelque chose avec la tâche avant d'utiliser le résultat.
Vous ne devriez jamais faire Map(content.Result) vous pouvez bloquer votre programme, si vous allez reporter, vous devez toujours utiliser les attendent. Map(await content),
Votre premier exemple est la bonne selon ci-dessous les réponses, mais sérieusement lu toutes les réponses, comme ils l'expliquent pourquoi l'exemple de deux peut introduire de l'interblocage.

OriginalL'auteur Toby Holland | 2015-01-28