Entwickler-Ecke

WinForms - toolstrip progress bar während thread laufen lassen


chrisachern - Mi 04.07.07 09:09
Titel: toolstrip progress bar während thread laufen lassen
hallo.

ich habe eine toolstrip progress bar. ich möchte diese während ein thread läuft laufen lassen.

wenn ich die abfrage so mache läuft sie. aber leider nur bis sie der Balken voll ist.


C#-Quelltext
1:
2:
3:
4:
                    while (newthread.ThreadState == System.Threading.ThreadState.Running)
                    {
                        tStProgressBar.PerformStep();                    
                    }


wenn ich aber noch eine abfrage dazwischen mache, um die progressar wieder an den anfang zu setzen,
passiert gar nix.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
                    while (newthread.ThreadState == System.Threading.ThreadState.Running)
                    {
                        tStProgressBar.PerformStep();

                        if (tStProgressBar1Value == tStProgressBar.Maximum)
                            tStProgressBar.Value = tStProgressBar.Minimum;
                      
                    }


kann mir jemand helfen bitte

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


chrisachern - Do 05.07.07 10:00

hab das gefühl, dass während der thread läuft die ganze form wie eingefroren ist, da auch die uhr, die
eingebaut ist, stehenbleibt.

ich glaube die progressbar erhält die richtigen werte, aber sie wird nicht neu gezeichnet.

mit welcher methode kann ich die progressbar neu zeichen lassen?

gruss
chris


Christian S. - Do 05.07.07 12:18

Naja, die Schleife wird pausenlos ausgeführt, da hat er ja keine Zeit die GUI zu aktualisieren. An Deiner Stelle würde ich die Sache mit der Progressbar in einen Timer packen und nur alle paar hundert Millisekunden machen lassen. In dem Timer (und mit einem entsprechend sinnvollen Intervall) kannst Du dann zur Not noch Application.DoEvents aufrufen. In Deiner Schleife würde das wahrscheinlich die Anwendung zu einer Schnecke machen.