Maison > développement back-end > C++ > Comment découpler les mises à jour de la barre de progression des calculs externes en C# ?

Comment découpler les mises à jour de la barre de progression des calculs externes en C# ?

Linda Hamilton
Libérer: 2025-01-14 10:49:44
original
424 Les gens l'ont consulté

How to Decouple Progress Bar Updates from External Calculations in C#?

Mises à jour de la barre de progression en C# pour gérer les calculs externes sans entrave

Dans certains cas, vous devrez peut-être afficher la progression des calculs en cours effectués dans une bibliothèque externe. Cependant, vous souhaitez dissocier la méthode de calcul de la dépendance directe de la barre de progression.

Considérons l'exemple suivant :

<code class="language-c#">private void CaluculateAll(System.Windows.Forms.ProgressBar progressBar)
{
    progressBar.Maximum = 100000;
    progressBar.Step = 1;

    for (int j = 0; j < 100000; j++)
    {
        // Perform some calculation
        progressBar.PerformStep();
    }
}</code>
Copier après la connexion

Bien que cette approche garantisse un rapport de progression, elle lie étroitement la méthode CaluculateAll à la barre de progression. Pour résoudre ce problème, pensez à utiliser la classe BackgroundWorker :

<code class="language-c#">private void button1_Click(object sender, EventArgs e)
{
    progressBar1.Maximum = 100;
    progressBar1.Step = 1;
    progressBar1.Value = 0;
    backgroundWorker.RunWorkerAsync();
}

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
    var backgroundWorker = sender as BackgroundWorker;
    for (int j = 0; j < 100; j++)
    {
        // Perform some calculation
        backgroundWorker.ReportProgress(j);
    }
}

private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    progressBar1.Value = e.ProgressPercentage;
}</code>
Copier après la connexion

Cette séparation permet d'effectuer des calculs indépendamment de l'interface utilisateur tout en fournissant un mécanisme de reporting de progression incrémentiel. BackgroundWorker gère le threading et la synchronisation nécessaires pour éviter que l'interface ne se fige pendant les calculs.

En utilisant efficacement le BackgroundWorker, vous pouvez mettre à jour de manière transparente la barre de progression sans affecter la flexibilité et le découplage de votre base de code.

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