Maison >développement back-end >C++ >Comment puis-je exécuter efficacement des tâches asynchrones parallèles dans .NET 4.5 ?

Comment puis-je exécuter efficacement des tâches asynchrones parallèles dans .NET 4.5 ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-13 12:09:43969parcourir

How Can I Efficiently Run Parallel Async Tasks in .NET 4.5?

Optimisation des opérations asynchrones parallèles dans .NET 4.5

.NET 4.5 offre de robustes capacités de programmation asynchrone pour l'exécution simultanée de plusieurs tâches longues. Cependant, certaines implémentations initiales peuvent paraître trop complexes et manquer de l’élégance inhérente aux méthodologies asynchrones. Cet exemple amélioré corrige ces lacunes.

Structure de code améliorée

Le code affiné suivant offre une approche plus efficace et rationalisée :

<code class="language-csharp">async Task GoAsync()
{
    Console.WriteLine("Initiating Tasks");

    Task<int> task1 = SleepAsync(5000);
    Task<int> task2 = SleepAsync(3000);

    await Task.WhenAll(task1, task2);

    int totalSleepTime = task1.Result + task2.Result;

    Console.WriteLine($"Total sleep time: {totalSleepTime} ms");
}

private async Task<int> SleepAsync(int milliseconds)
{
    Console.WriteLine($"Sleeping for {milliseconds} ms");

    try
    {
        await Task.Delay(milliseconds);
        return milliseconds;
    }
    finally
    {
        Console.WriteLine($"Sleep for {milliseconds} ms COMPLETE");
    }
}</code>

Améliorations clés :

  • GoAsync est désormais une méthode asynchrone (async Task), permettant d'utiliser await pour gérer l'achèvement des tâches.
  • SleepAsync est une méthode asynchrone renvoyant Task<int>, reflétant la nature asynchrone de l'opération.
  • Task.WhenAll attend efficacement l'achèvement des deux tâches simultanément, éliminant le besoin d'un accès .Result explicite et améliorant les performances.

Code fonctionnel :

Ce code révisé exécute les deux tâches simultanément, collectant efficacement les résultats. Cette méthode fournit une solution plus propre, plus concise et efficace pour l'exécution de tâches asynchrones parallèles dans .NET 4.5.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn