Définition - Que signifie l'appel de méthode asynchrone?
Un appel de méthode asynchrone est une méthode utilisée dans la programmation .NET qui retourne à l'appelant immédiatement avant la fin de son traitement et sans bloquer le thread appelant.
Lorsqu'une application appelle une méthode asynchrone, elle peut s'exécuter simultanément avec l'exécution de la méthode asynchrone qui effectue sa tâche. Une méthode asynchrone s'exécute dans un thread distinct du thread d'application principal. Les résultats du traitement sont récupérés via un autre appel sur un autre thread.
Les méthodes asynchrones aident à optimiser l'exécution des ressources, ce qui permet une application évolutive. Ils sont utilisés pour exécuter des tâches chronophages telles que l'ouverture de fichiers volumineux, la connexion à des ordinateurs distants, l'interrogation d'une base de données, l'appel de services Web et de formulaires Web ASP.NET.
L'appel de méthode asynchrone peut également être appelé invocation de méthode asynchrone (AMI).
Definir Tech explique l'appel de méthode asynchrone
La méthode asynchrone diffère de la méthode synchrone par la manière dont elle renvoie de l'appel. Alors qu'un appel de méthode asynchrone retourne immédiatement, permettant au programme appelant d'effectuer d'autres opérations, les appels de méthode synchrone attendent que la méthode se termine avant de poursuivre le déroulement du programme.
Le framework .NET a une infrastructure asynchrone intégrée afin que toute méthode puisse être appelée de manière asynchrone sans modifier son code.
.NET Framework fournit deux modèles de conception pour implémenter la méthode asynchrone, qui sont ceux qui utilisent des délégués asynchrones (objets IASyncResult) et des événements. Le modèle des délégués asynchrones est plus complexe et offre de la flexibilité, ce qui le rend bien adapté à divers modèles de programmation complexes. Le modèle basé sur les événements est simple et doit être utilisé dans la plupart des cas.
Dans le modèle de délégués asynchrones, un objet délégué utilise deux méthodes: BeginInvoke et EndInvoke. BeginInvoke a une liste de paramètres, qui sont similaires à sa fonction encapsulée, avec deux paramètres facultatifs supplémentaires; il renvoie l'objet IAsyncResult. EndInvoke renvoie deux paramètres (out et ref type) avec l'objet IAsyncResult. BeginInvoke est utilisé pour lancer l'appel asynchrone, tandis que EndInvoke est utilisé pour récupérer les résultats de l'appel asynchrone.
Les modèles asynchrones basés sur des événements utilisent une classe qui a une ou plusieurs méthodes, nommées MethodNameAsync, qui ont des versions synchrones correspondantes qui s'exécutent sur le thread actuel. Les modèles basés sur des événements peuvent également avoir un événement MethodNameCompleted et une méthode MethodNameAsyncCancel. Ce modèle permet à la classe de communiquer avec les opérations asynchrones en attente à l'aide du modèle d'événement délégué.
Voici quelques conseils relatifs aux méthodes asynchrones:
- Pour une concurrence élevée, les méthodes asynchrones doivent être évitées
- Des précautions doivent être prises lors de la transmission des références d'objets partagés
- EndXXX (appelé à la fin d'une opération asynchrone) doit être appelé pour renvoyer les exceptions et éviter l'échec
- En interceptant et en enregistrant tous les objets d'exception dans une méthode asynchrone, il peut être renvoyé pendant l'appel EndXXX
- Les contrôles de l'interface utilisateur qui lancent des opérations asynchrones de longue durée doivent être désactivés s'ils ne sont nécessaires qu'à cette fin
- Les méthodes asynchrones doivent être implémentées avec une compréhension du multithreading et là où elles s'avèrent plus efficaces que l'utilisation de méthodes synchrones.