Maison > développement back-end > C++ > Comment exécuter des tâches en arrière-plan dans les applications WPF sans geler l'interface utilisateur ?

Comment exécuter des tâches en arrière-plan dans les applications WPF sans geler l'interface utilisateur ?

Barbara Streisand
Libérer: 2025-01-07 14:45:42
original
429 Les gens l'ont consulté

How to Execute Background Tasks in WPF Applications Without Freezing the UI?

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

Dans les applications WPF, il est souvent nécessaire d'effectuer des tâches en arrière-plan pour éviter de figer l'interface utilisateur ( interface utilisateur). Pour ce faire, les développeurs ont besoin d'un mécanisme qui répond aux critères suivants :

  • Thème d'interface utilisateur non bloquant
  • Rapport de progression
  • Annulation
  • Multithreading support

Approche recommandée : API basée sur les tâches et Async/Await

Avec la sortie de .NET 4.5 (ou .NET 4.0 avec la bibliothèque Microsoft.Bcl.Async), l'approche recommandée pour les tâches en arrière-plan consiste à utiliser l'API basée sur les tâches et async /attendre. Cette technique offre les avantages suivants :

  • Flux de travail de code pseudo-séquentiel : Les développeurs peuvent écrire du code qui se lit comme un flux de travail séquentiel, ce qui le rend plus facile à comprendre et à maintenir.
  • Gestion structurée des exceptions : Async/await fournit un moyen structuré de gérer les exceptions asynchrones exceptions.

Exemple d'implémentation

Le code suivant montre comment exécuter une tâche en arrière-plan à l'aide de l'API basée sur les tâches et async/await :

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

Ce code génère une nouvelle tâche en parallèle du thread de l'interface utilisateur, permettant à l'interface utilisateur de rester réactive pendant que la tâche en arrière-plan progresse. Il inclut également la gestion des exceptions pour afficher un message d'erreur si une exception se produit pendant l'exécution de la tâche.

Ressources supplémentaires

Pour plus d'informations sur l'exécution de tâches en arrière-plan dans WPF avec rapport de progression et la prise en charge de l'annulation, considérez les références suivantes :

  • [Comment exécuter une tâche en arrière-plan WPF tout en étant capable de fournir un rapport et d'autoriser annulation ?](https://stackoverflow.com/questions/12342842/how-to-execute-task-in-the-wpf-background-while-able-to-provide-report-a)
  • [Async dans 4.5 : activation de la progression et de l'annulation dans Async API](https://blogs.msdn.microsoft.com/charlie/2012/03/14/async-in-4-5-enabling-progress-and-cancellation-in-async-apis/)
  • [Async et Attendre](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/)
  • [FAQ Async/Await](https://docs.microsoft .com/en-us/dotnet/csharp/programming-guide/concepts/async/async-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