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:
<code class="language-csharp">public void InitializeApplication() { Thread initThread = new Thread(new ThreadStart(Initialize)); initThread.Start(); } public void Initialize() { // Perform initialization steps here }</code>
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:
<code class="language-csharp">using System.ComponentModel;</code>
Instanciate Backgroundworker:
<code class="language-csharp">private readonly BackgroundWorker backgroundWorker = new BackgroundWorker();</code>
Enregistrer les gestionnaires d'événements:
<code class="language-csharp">backgroundWorker.DoWork += BackgroundWorker_DoWork; backgroundWorker.RunWorkerCompleted += BackgroundWorker_RunWorkerCompleted;</code>
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:
<code class="language-csharp">backgroundWorker.RunWorkerAsync();</code>
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!