Maison > développement back-end > C++ > Comment implémenter un BackgroundWorker avec des mises à jour de progression à l'aide d'une ProgressBar ?

Comment implémenter un BackgroundWorker avec des mises à jour de progression à l'aide d'une ProgressBar ?

Mary-Kate Olsen
Libérer: 2025-01-09 18:51:43
original
443 Les gens l'ont consulté

How to Implement a BackgroundWorker with Progress Updates Using a ProgressBar?

Utilisez la barre de progression pour mettre à jour la progression du travailleur en arrière-plan

Question :

Comment utiliser le contrôle ProgressBar pour implémenter un BackgroundWorker avec des mises à jour de progression ?

Réponse :

Pour implémenter correctement un BackgroundWorker avec les mises à jour ProgressBar, suivez ces étapes :

  • Dans l'événement DoWork de BackgroundWorker, utilisez la méthode ReportProgress pour signaler périodiquement la progression.
  • Dans l'événement ProgressChanged, mettez à jour la valeur de ProgressBar pour afficher la progression signalée sur le fil de discussion de l'interface utilisateur.
  • Définissez la propriété WorkerReportsProgress de BackgroundWorker sur true pour autoriser les rapports de progression.
  • Utilisez la méthode RunWorkerAsync pour exécuter BackgroundWorker de manière asynchrone.

Ce qui suit est un exemple d'implémentation simple de BackgroundWorker qui met à jour le contrôle ProgressBar :

Code XAML :

<ProgressBar Height="25" Margin="20" Maximum="50" Minimum="0" x:Name="myProgressBar"/>
Copier après la connexion

Code backend :

using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;

public partial class MainWindow : Window
{
    BackgroundWorker backgroundWorker = new BackgroundWorker();

    public MainWindow()
    {
        InitializeComponent();

        backgroundWorker.WorkerReportsProgress = true;
        backgroundWorker.ProgressChanged += BackgroundWorker_ProgressChanged;
        backgroundWorker.DoWork += BackgroundWorker_DoWork;

        backgroundWorker.RunWorkerAsync();
    }

    private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
    {
        for (int i = 0; i < 50; i++)
        {
            System.Threading.Thread.Sleep(100); // 模拟工作
            backgroundWorker.ReportProgress(i);
        }
    }

    private void BackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        myProgressBar.Value = e.ProgressPercentage;
    }
}
Copier après la connexion

En suivant ces étapes, vous pouvez créer un BackgroundWorker qui s'intègre parfaitement à l'interface graphique pour fournir des mises à jour de progression à l'utilisateur.

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!

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