Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
.NET fournit trois modèles pour effectuer des opérations asynchrones :
Modèle asynchrone basé sur des tâches (TAP) qui utilise une méthode unique pour représenter l’initiation et l’achèvement d’une opération asynchrone. TAP a été introduit dans .NET Framework 4. Il s’agit de l’approche recommandée pour la programmation asynchrone dans .NET. Les mots clés asynchrones et await en C# et les opérateurs Async et Await dans Visual Basic ajoutent la prise en charge du langage pour TAP. Pour plus d’informations, consultez Le modèle asynchrone basé sur les tâches (TAP) .
Modèle asynchrone basé sur les événements (EAP), qui est le modèle hérité basé sur les événements pour fournir un comportement asynchrone. Elle nécessite une méthode qui a le suffixe
Async
et un ou plusieurs événements, des types délégués de gestionnaire d’événements et des types dérivésEventArg
. EAP a été introduit dans .NET Framework 2.0. Il n’est plus recommandé pour le nouveau développement. Pour plus d’informations, consultez Le modèle asynchrone basé sur les événements (EAP).Modèle de programmation asynchrone (APM) ( également appelé IAsyncResult modèle), qui est le modèle hérité qui utilise l’interface IAsyncResult pour fournir un comportement asynchrone. Dans ce modèle, les opérations asynchrones nécessitent des méthodes
Begin
etEnd
(par exemple,BeginWrite
etEndWrite
pour implémenter une opération d’écriture asynchrone). Ce modèle n’est plus recommandé pour le nouveau développement. Pour plus d’informations, consultez Le modèle de programmation asynchrone (APM).
Comparaison des modèles
Pour une comparaison rapide de la façon dont les trois modèles modélisent des opérations asynchrones, envisagez une Read
méthode qui lit une quantité spécifiée de données dans une mémoire tampon fournie commençant à un décalage spécifié :
public class MyClass
{
public int Read(byte [] buffer, int offset, int count);
}
L’équivalent TAP de cette méthode expose la méthode unique ReadAsync
suivante :
public class MyClass
{
public Task<int> ReadAsync(byte [] buffer, int offset, int count);
}
L’équivalent EAP expose l’ensemble de types et de membres suivant :
public class MyClass
{
public void ReadAsync(byte [] buffer, int offset, int count);
public event ReadCompletedEventHandler ReadCompleted;
}
L'équivalent APM exposerait les méthodes BeginRead
et EndRead
.
public class MyClass
{
public IAsyncResult BeginRead(
byte [] buffer, int offset, int count,
AsyncCallback callback, object state);
public int EndRead(IAsyncResult asyncResult);
}