Maison > développement back-end > C++ > Comment gérer efficacement les tâches en arrière-plan dans WPF avec Async/Await ?

Comment gérer efficacement les tâches en arrière-plan dans WPF avec Async/Await ?

Patricia Arquette
Libérer: 2025-01-07 14:54:10
original
144 Les gens l'ont consulté

How to Effectively Manage Background Tasks in WPF with Async/Await?

Exécuter efficacement les tâches en arrière-plan dans WPF

Traditionnellement, les tâches en arrière-plan dans les applications WPF étaient gérées à l'aide d'approches telles que TAP, TPL, BackgroundWorker ou Répartiteur. Cependant, pour les tâches qui nécessitent des critères spécifiques, tels que l'interface utilisateur non bloquante, les rapports de progression, l'annulation et la prise en charge du multithreading, l'approche recommandée a évolué.

Dans .NET 4.5 et versions ultérieures, la meilleure solution consiste à exploiter l'API basée sur les tâches et le modèle asynchrone/attente. Cela permet aux développeurs d'écrire du code de manière séquentielle tout en exécutant des tâches de manière asynchrone en arrière-plan. L'utilisation de la gestion des exceptions est également simplifiée grâce à la gestion structurée des erreurs.

Considérons l'exemple suivant :

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

Ici, la méthode Start lance une tâche asynchrone à l'aide de Task.Run(), qui permet à la tâche de s'exécuter simultanément sans interférer avec le thread de l'interface utilisateur. La tâche s'exécute en boucle, incrémentant la progression et enregistrant les informations. La gestion des exceptions est gérée dans le bloc asynchrone.

Cette approche fournit le comportement non bloquant souhaité, permet le rapport de progression, prend en charge l'annulation (via le jeton d'annulation associé à la tâche) et permet à la tâche d'être exécutée sur plusieurs threads si vous le souhaitez.

Pour en savoir plus sur ce sujet, reportez-vous aux ressources suivantes :

  • [Comment exécuter une tâche en arrière-plan WPF tout en étant capable de fournir un rapport et autoriser l'annulation ?](https://stackoverflow.com/questions/642369/how-to-execute-task-in-the-wpf-background-while-able-to-provide-report-and-all)
  • [Async en 4.5 : Activation de la progression et de l'annulation en Async API](https://msdn.microsoft.com/en-us/library/jj193081(v=vs.110).aspx)
  • [Async et Attendre](https://msdn.microsoft.com/en-us/library/hh191443(v=vs.103).aspx)
  • [FAQ Async/Await](https://blogs.msdn .microsoft.com/brada/2011/09/29/async-await-faq/)

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal