Maison >développement back-end >C++ >Pourquoi mon appel HttpClient.GetAsync se bloque-t-il lors de l'utilisation d'Await/Async dans ASP.NET ?
La raison pour laquelle HttpClient.GetAsync(...) se bloque lors de l'utilisation d'Await/Async dans ASP.NET
Dans ASP.NET, un seul thread peut gérer une requête à la fois. Bien que le traitement parallèle soit possible, un seul thread possède le contexte de la requête. Cette gestion des threads est contrôlée par ASP.NET SynchronizationContext.
En attendant une tâche, les méthodes reprennent généralement sur le SynchronizationContext capturé (ou TaskScheduler s'il n'existe pas). Ceci est cohérent avec le comportement attendu des opérations de contrôleur asynchrone.
Problème dans le cas de test 5
Le blocage dans Test5Controller.Get est dû à la séquence suivante :
Résoudre le problème
Il existe quelques bonnes pratiques qui peuvent être mises en œuvre pour éviter des problèmes similaires :
Conclusion
Comprendre le rôle de SynchronizationContext et les meilleures pratiques d'utilisation de la technologie async/await peut garantir un fonctionnement efficace et sans blocage lorsque vous travaillez avec du code asynchrone dans ASP.NET.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!