ASP.NET MVC4 async controller-Pourquoi utiliser?

j'essaie de comprendre pourquoi et quand je dois utiliser une action de contrôleur async . Finalement, quand j'utilise await dans ce, il attendra que l'opération complète afin de retourner la vue.

par exemple

public async Task<ActionResult> TryMe()
{
   await SomeActionAsync();
   return View();
}

dans ce cas , si j'utilise le async ou si je n'utilise pas le async , le Action prendra le même temps d'exécution.

si je n'essaie pas exécuter au moins 2 opérations lentes (qui ne dépendent pas l'une de l'autre) en parallèle, Je ne vois aucune raison d'utiliser une action de contrôleur async .

corrigez-moi si je me trompe. Je pense que je suis absent quelque chose ici.

34
demandé sur Luiso 2013-03-03 23:54:17

1 réponses

le but du mot-clé await est de vous permettre de travailler avec opérations asynchrones sans écrire des rappels laids.

utilisant des opérations asynchrones permet d'éviter de gaspiller les threads de thread pool.

explication

ASP.Net exécute tout votre code dans les threads du pool de threads géré.

Si vous avez trop de requêtes lentes à la fois, le pool de threads complet, et les nouvelles demandes devront attendre un thread pour se libérer.

souvent, cependant, vos requêtes sont lentes, non pas parce qu'elles font du calcul (lié au calcul), mais parce qu'elles attendent autre chose, comme un disque dur, un serveur de base de données, ou un service Web externe (lié à L'IO ou au réseau).

il ne sert à rien de gaspiller un précieux filetage à filetage fileté simplement pour attendre la fin de l'opération externe.

Les opérations asynchrones vous permettent de démarrer l'opération, de retourner votre thread dans la piscine, puis de "se réveiller" sur un thread différent lorsque l'opération est terminée.

Pendant que l'opération est en cours, aucun thread n'est consommé.

50
répondu SLaks 2013-11-12 20:25:57