Maison >développement back-end >C++ >Comment implémenter l'exécution de tâches en arrière-plan avec rapport de progression et annulation dans WPF ?

Comment implémenter l'exécution de tâches en arrière-plan avec rapport de progression et annulation dans WPF ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-07 14:52:44933parcourir

How to Implement Background Task Execution with Progress Reporting and Cancellation in WPF?

Exécution de tâches en arrière-plan dans WPF avec rapport de progression et annulation

Dans une application WPF, l'exécution de tâches asynchrones est essentielle pour maintenir une interface utilisateur réactive tout en effectuant des opérations de longue durée . L'approche recommandée pour y parvenir avec la prise en charge des rapports de progression et de l'annulation consiste à utiliser le modèle asynchrone basé sur les tâches (TAP) et les mots-clés async/await.

Exigences :

  • Bloquer le fil de discussion de l'interface utilisateur
  • Fournir des rapports d'avancement
  • Être annulable
  • Support multithreading

Solution :

Avec .NET 4.5 (ou .NET 4.0 avec Microsoft.Bcl.Async), TAP et async/await offrent une solution pratique et structurée. Voici un exemple :

private async void Start(object sender, RoutedEventArgs e)
{
    try
    {
        await Task.Run(() =>
        {
            int progress = 0;
            while (true)
            {
                System.Threading.Thread.Sleep(1);
                progress++;
                Logger.Info(progress);
            }
        });
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

Avantages :

  • Flux de code séquentiel : Permet un code intuitif et facile à lire .
  • Gestion structurée des exceptions : La gestion des erreurs est encapsulé dans le bloc try/catch.
  • Prise en charge du multithreading : Les tâches peuvent être exécutées sur plusieurs threads, permettant la concurrence.

Ressources supplémentaires :

  • [Comment exécuter une tâche en arrière-plan WPF tout en étant capable de fournir un rapport et autoriser l'annulation ?](stackoverflow.com/questions/6743198/how-to-execute-task-in-the-wpf-background-while-able-to-provide-report-and-a)
  • [Async dans 4.5 : activation de la progression et de l'annulation dans Async API](msdn.microsoft.com/en-us/library/hh191443)
  • [Async et Await](msdn.microsoft.com/en-us/library/dd997377)
  • [ Asynchrone/Attente FAQ](msdn.microsoft.com/en-us/library/hh973923)

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