Junior
Qu'est-ce que la programmation asynchrone utilisant les mots-clés async et await?
sobes.tech IA
Réponse de l'IA
La programmation asynchrone avec async et await permet d’effectuer des opérations pouvant prendre du temps (par exemple, entrée/sortie, requêtes réseau) sans bloquer le fil d’exécution principal du programme. Cela améliore la réactivité de l’application.
async: Utilisé pour modifier une méthode et indique au compilateur que des opérateursawaitseront utilisés à l’intérieur. Une méthode marquée commeasyncpeut retournerTask,Task<T>ouvoid(bien quevoiddoive être évité, sauf pour les gestionnaires d’événements). LeTaskouTask<T>retourné représente une opération qui n’est pas encore terminée.await: S’applique à une opération asynchrone (retournantTaskouTask<T>). Lorsqu’elle atteint l’opérateurawait, la méthode « suspend » son exécution, libérant le fil actuel. L’opération asynchrone s’exécute en arrière-plan (ou utilise un pool de threads, ou le mécanisme d’entrée/sortie du système d’exploitation). Lorsqu’elle se termine, l’exécution de la méthode reprend après le mêmeawaitdans un autre fil ou dans le même si celui-ci est disponible.
Exemple d’utilisation de base :
// méthode async retournant Task
public async Task DoSomethingAsync()
{
// Effectue une opération asynchrone en attendant sa fin
await Task.Delay(1000); // Simulation d’une opération longue
Console.WriteLine("Opération asynchrone terminée.");
}
// méthode async retournant Task<int>
public async Task<int> GetValueAsync()
{
await Task.Delay(500);
return 42;
}
// Utilisation de async et await dans la méthode Main (pour l’exemple, dans les applications réelles, généralement lancé depuis un Main async dans .NET Core 3.0+)
public static async Task Main(string[] args)
{
Console.WriteLine("Démarrage...");
// Appel des méthodes asynchrones
await DoSomethingAsync();
int result = await GetValueAsync();
Console.WriteLine($"Résultat : {result}");
Console.WriteLine("Terminé.");
}
L’avantage principal de async/await par rapport à la gestion manuelle des threads ou des callbacks est la simplification de l’écriture et de la lecture du code asynchrone. Il ressemble presque au code synchrone, mais ne bloque pas le fil, ce qui est crucial pour les applications avec interface utilisateur ou les applications serveur à haute charge.