Fortschritt ermitteln

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Mr.Blade.

    Fortschritt ermitteln

    Okay

    Ich hab noch eine Frage wie kann ich den Fortschritt der aktuellen Aufgabe die der Computer ausführen muss in einer Progressbar festhalten?

    Beispiel: Nehmen wir mal an ich möchte alle Dateien die ich auf dem Computer habe in eine Listbox speichern. Das dauert ja ne weile. Wie kann ich nun den Fortschritt dieser Aufgabe in einer Progressbar festhalten?

    Weitere Beispiele:

    Beispiel A: Bei Setups
    Spoiler anzeigen

    Bei Setups ist das doch auch so das während der Installation der Fortschritt in einer Progressbar ist.


    Beispiel B: Bei AV-Programmen
    Spoiler anzeigen

    Bei Antiviren-Programmen ist das beim Scan doch so das der Fortschritt in einer Progressbar ist.


    Vielen Dank im Vorraus! :) ;)
    Alle Dateien, die du einlesen willst, zählen und mit einer Schleife durch gehen. Dann halt Prozentrechnen und schon kannste du die Progressbar füllen. Bedenkte aber immer, das es dann länger dauert als ohne Progressbar. Nimm möglichst den Marquee Style, das ist wesentlich besser.
    Mfg
    Vincent

    Hallo,

    du nimmst als Progressbar-Maximum z.B. die Anzahl der Dateien

    und dann wenn du eine Datei weiterverarbeitet hast, machst du einfach
    z.B. Progressbar.Increment(1) oder Progressbar.Value += 1.

    MFG

    Alex-Digital :D
    ~ Alex-Digital :D

    if(!Internet.VBP.Get<User>("Alex-Digital").IsOnline) this.Close(); :D
    Du musst natürlich den Fortschritt selbst ermitteln. Doch bei deinem Beispiel macht das keinen Sinn, denn bis du weißt wie viele Dateien du in allen Unterordnern hast, sind diese auch schon in der Listbox. Anders jedoch wenn du z.B. jedes Bild nach z.B. Text durchsuchst. Dazu einfach alle Bilder zählen. Und von mir aus alle 50 Bilder den Fortschritt aktualisieren. Dazu (verarbeitete bilder)/(gesamte bilder) * 100 -> haste deine Prozent.

    @Alex-Digital
    Du musst a) auch das Maximum der Progessbar anpassen. Wenn du 10000 Elemente zum verarbeiten hast, musst du auch das Maximum von z.b. einer Progressbar auf 10000 setzen. Ansonsten haste recht schnell ne ArgumentOutOfRangeEx. Zudem wird dies in der Praxis nicht für jedes Element gemacht. Je nach dem was man verarbeitet wird der Fortschritt erst nach einer bestimmten Anzahl von Vorgängen aktualisiert. Habe ich z.B. 150.000 Einträge welche ich in eine Datenbank speichern muss, so werde ich garantiert nicht 150.000 die Progressbar aktualisieren, da dies einfach zu viel performance braucht. Vielmehr werde ich von mir aus alle 3000 Datensätze den Fortschritt aktualisieren.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Der eigentliche Vorgang muss in einen BackgroundWorker. Die ProgressBar ließe sich mithilfe von einem Timer und BackgroundWorker.ReportProgress zur Festlegung des "derzeitigen" Wertes dann ansteuern. Der Maximalwert muss natürlich noch ermittelt werden, du nimmst z.B. die Anzahl aller gefunden Dateien auf dem Computer (Maximalwert), der "derzeitige" Wert ergibt sich dann aus der Anzahl der Listeneinträge.

    Für einen Setup würde ich die Gesamtgröße in Bytes von Ordner A / 100 ermitteln (Maximalwert). Alle Dateien müssen dann quasi Byte für Byte in den Zielordner geschrieben werden (buffer).

    Gruß