Partager via


Opérations asynchrones

Certaines opérations de base de données, telles que les exécutions de commandes, peuvent prendre beaucoup de temps. Dans ce cas, les applications à thread unique doivent bloquer d'autres opérations et attendre que la commande soit terminée avant de poursuivre leurs propres opérations. En revanche, pouvoir affecter une opération longue à un thread d’arrière-plan permet au thread de premier plan de rester actif pendant l’opération. Dans une application Windows, par exemple, la délégation de l’opération de longue durée à un thread d’arrière-plan permet au thread d’interface utilisateur de rester réactif pendant l’exécution de l’opération.

Le .NET Framework fournit plusieurs modèles de conception asynchrone standard que les développeurs peuvent utiliser pour tirer parti des threads d’arrière-plan et libérer l’interface utilisateur ou les threads de haute priorité pour effectuer d’autres opérations. ADO.NET prend en charge ces mêmes modèles de conception dans sa SqlCommand classe. Plus précisément, les méthodes BeginExecuteNonQuery, BeginExecuteReaderet BeginExecuteXmlReader, associées aux méthodes EndExecuteNonQuery, EndExecuteReader et EndExecuteXmlReader, fournissent le support asynchrone.

Remarque

La programmation asynchrone est une fonctionnalité principale du .NET Framework, et ADO.NET tire pleinement parti des modèles de conception standard. Pour plus d'informations sur les différentes techniques asynchrones disponibles pour les développeurs, consultez Appel de méthodes synchrones de façon asynchrone.

Bien que l’utilisation de techniques asynchrones avec des fonctionnalités ADO.NET n’ajoute aucune considération particulière, il est probable que plus de développeurs utiliseront des fonctionnalités asynchrones dans ADO.NET que dans d’autres domaines du .NET Framework. Il est important de connaître les avantages et les pièges de la création d’applications multithread. Les exemples qui suivent dans cette section signalent plusieurs problèmes importants que les développeurs doivent prendre en compte lors de la création d’applications qui incorporent des fonctionnalités multithread.

Dans cette section

Applications Windows utilisant des fonctions de rappel
Fournit un exemple montrant comment exécuter une commande asynchrone en toute sécurité, en gérant correctement l’interaction avec un formulaire et son contenu à partir d’un thread distinct.

Applications ASP.NET utilisant les handles d’attente
Fournit un exemple montrant comment exécuter plusieurs commandes simultanées à partir d’une page ASP.NET, à l’aide de descripteurs d’attente pour gérer l’opération à l’achèvement de toutes les commandes.

Interrogation dans les applications console
Fournit un exemple illustrant l’utilisation de l’interrogation pour attendre la fin de l’exécution d’une commande asynchrone à partir d’une application console. Cette technique est également valide dans une bibliothèque de classes ou une autre application sans interface utilisateur.

Voir aussi