Question

J'ai une fonction qui remplit simplement une barre de progression.

private void FillProgressBar(ProgressBar bar, Color c, int percent)
{
    int steps = 10;
    bar.set_Value(0);
    for (int i = 0; i < percent / steps; i++)
    {
        System.Threading.Thread.Sleep(100);
        bar.set_Value((i+1)*10) + bar.get_Value());
        this.Refresh();
    }
}

J'Invoquer du fil IUG (filetage pas multi) et son but est de remplir lentement la barre.

Mais il ne semble pas le faire, bien que la valeur soulève.

Toutes les suggestions sur la façon de mettre à jour un contrôle spécifique ou toute la forme? PS:. Comme vous pouvez le voir, This.Refresh () ne fonctionne pas non plus

Était-ce utile?

La solution

try using

Application.DoEvents();

After updating the progress bar.

more on DoEvents here

Autres conseils

Your current code don't let the main message loop execute and so it'll block all messages including WM_PAINT ones...

You shouldn't do that, use a thread, use a timer : don't block the UI.

And don't use Application.DoEvents it's bad programming practice and shouldn't even exists.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top