WPF BackgroundWorker : un guide pour une conception d'interface utilisateur réactive
Le maintien d'une interface utilisateur (UI) réactive est crucial pour une expérience utilisateur positive. Cependant, les processus de longue durée peuvent facilement geler votre application WPF. Ce guide explique comment utiliser le composant BackgroundWorker
pour effectuer des tâches longues de manière asynchrone, garantissant ainsi que votre interface utilisateur reste réactive.
Implémentation de BackgroundWorker
Tout d'abord, incluez l'espace de noms nécessaire :
<code class="language-csharp">using System.ComponentModel;</code>
Étape 1 : Initialisation et gestion des événements
Créer une BackgroundWorker
instance :
<code class="language-csharp">private readonly BackgroundWorker worker = new BackgroundWorker();</code>
Ensuite, abonnez-vous aux événements DoWork
et RunWorkerCompleted
pour gérer l'exécution et la réalisation de la tâche en arrière-plan :
<code class="language-csharp">worker.DoWork += Worker_DoWork; worker.RunWorkerCompleted += Worker_RunWorkerCompleted;</code>
Étape 2 : Logique du gestionnaire d'événements
Le gestionnaire d'événements Worker_DoWork
exécute votre tâche de longue durée. Le gestionnaire d'événements Worker_RunWorkerCompleted
met à jour l'interface utilisateur une fois la tâche terminée.
Exemple :
<code class="language-csharp">private void Worker_DoWork(object sender, DoWorkEventArgs e) { // Perform your time-consuming operation here } private void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { // Update the UI with results here }</code>
Étape 3 : Démarrage de l'opération asynchrone
Lancez la tâche en arrière-plan à l'aide de worker.RunWorkerAsync()
.
Facultatif : rapports d'avancement
Pour les mises à jour des progrès, abonnez-vous à l'événement ProgressChanged
et utilisez worker.ReportProgress(Int32)
dans la méthode DoWork
. N'oubliez pas de définir worker.WorkerReportsProgress = true
.
Exemple :
<code class="language-csharp">// Subscribe to ProgressChanged worker.ProgressChanged += Worker_ProgressChanged; // Report progress within Worker_DoWork worker.ReportProgress(50);</code>
Conclusion
Le BackgroundWorker
de WPF offre une méthode simple mais puissante pour exécuter simultanément des opérations de longue durée, évitant ainsi le gel de l'interface utilisateur. En suivant ces étapes, vous pouvez créer des applications WPF plus réactives et plus conviviales.
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!