Tirant l'exécution de l'arrière-plan pour les performances lisses de l'interface utilisateur WPF avec des tâches de longue durée
Dans les applications WPF, les processus d'arrière-plan à long terme provoquent fréquemment des gels d'interface utilisateur. La classe BackgroundWorker
offre une solution rationalisée, permettant aux développeurs d'exécuter des tâches à forte intensité de temps sur des threads séparés, en maintenant la réactivité de l'interface utilisateur.
Exemple illustratif: déchargement d'initialisation étendue
Considérons l'initialisation d'une application WPF:
public void InitializeApplication() { Thread initThread = new Thread(new ThreadStart(Initialize)); initThread.Start(); } public void Initialize() { // Perform initialization steps here }
Cela sépare l'initialisation du thread principal, mais nécessite la gestion manuelle du thread.
Utilisation de l'arrière-plan pour une gestion efficace des threads
BackgroundWorker
simplifie cela, gérant des threads et fournissant des événements pour chaque étape opérationnelle. Voici comment:
Importer un espace de noms nécessaire:
using System.ComponentModel;
Instanciate Backgroundworker:
private readonly BackgroundWorker backgroundWorker = new BackgroundWorker();
Enregistrer les gestionnaires d'événements:
backgroundWorker.DoWork += BackgroundWorker_DoWork; backgroundWorker.RunWorkerCompleted += BackgroundWorker_RunWorkerCompleted;
Implémentez les gestionnaires d'événements:
DoWork
: exécute la longue tâche. RunWorkerCompleted
: met à jour l'interface utilisateur à l'achèvement de la tâche. Initier la tâche d'arrière-plan:
backgroundWorker.RunWorkerAsync();
Rapports progressistes (facultatif):
Pour les mises à jour de progression, abonnez-vous à l'événement ProgressChanged
et utilisez ReportProgress(Int32)
dans DoWork
. Activer les reportages progressistes avec backgroundWorker.WorkerReportsProgress = true;
.
En utilisant BackgroundWorker
, les applications WPF peuvent gérer des opérations étendues sans compromettre la réactivité de l'interface utilisateur. Les développeurs peuvent se concentrer sur la logique d'application sans les complexités du contrôle manuel du thread.
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!