Je pense que mon application Web souffre d'un blocage lorsque j'appelle les services de l'API YouTube. Je veux donc savoir comment résoudre ce problème de manière correcte. Je suppose que c'est un scénario similaire à celui-ci: Why does this async action hang?MVC5 - Deadlock avec des tâches asynchrones?
S'il vous plaît quelqu'un peut-il vous conseiller, en termes très simples, pourquoi mon application Web se bloque (voir les commentaires en ligne) et comment il devrait être résolu correctement? Merci!
public ActionResult Index()
{
YouTubeHelper yth = new YouTubeHelper();
bool unpublishVideo = yth.UpdateVideoOnYouTube(17, "public").Result;
}
public async Task<bool> UpdateVideoOnYouTube(int propertyId, string publishStatus)
{
.....
YouTubeService youtubeService = await GetYouTubeService(db);
.....
}
public async Task<YouTubeService> GetYouTubeService(ApplicationDbContext db)
{
....
if (!await credential.RefreshTokenAsync(CancellationToken.None)) //It hangs here!!
{
....
}
....
}
attendent l'appel à la méthode UpdateVideoOnYoutTube et supprimer l'accès à la 'Result' proeprty – Shyju
Mais je pense que le ActionResult devrait être asynchrone? Est-ce correct et bonne pratique? –
yes make it 'tâche asynchrone
Shyju