ProgressBar Refresh Performance

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    ProgressBar Refresh Performance

    Hallo,

    ich rufe aus Datenbank eine Spalte aus einer Tabelle ab und fülle damit ein Listview.

    Es handelt sich um ca. 40.000 Datensätze und das ganze dauert ca. 4 Sekunden.

    Nun habe ich eine ProgressBar eingebaut damit der Anwender etwas mehr sieht als nur die Sanduhr während die ABfrage läuft.

    Nach jedem durchlauf (do while r.read) berechne ich den Prozentwert und setze die Progressbar.Value gefolgt von einem Progressbar.Refresh.

    Nun dauert die Abfrage erheblich länger. > 1 Minute.

    Es liegt offenbar an dem Refresh(ohne Refresh geht das wie gewohnt in den 3-4 Sekunden)

    Wie kann ich die Progressbar dennoch während die Abfrage läuft aktualisieren, ohne diese riesige Zeitdifferenz zu haben ?




    Nimm mal das Refresh raus und baue stattdessen ein System.Windows.Forms.DoEvents() ein nachdem Du die Progressbar mit einem neuen Wert befüllt hast.

    Wenn das keine Abhilfe schafft dann bau einen Backgroundworker ein, der übernimmt die Befüllung des ListViews dann als Hintergrundprozesse und meldet den Verarbeitungsfortschritt an die Progressbar des Main-Threads.

    Hier ein einfaches Vid-Tut dazu das wie die Faust auf's Auge auf Deine Problemstellung passt ^^:

    der-softwareentwickler-blog.de…net-und-backgroundworker/

    Gruß

    Rainer
    Führe Deine Berechnung und Anzeige nicht nach jedem Read, sondern nach jedem 100. Read durch.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!