Datei oder Prozess läuft Prozessbar Marquee

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von singu.

    Datei oder Prozess läuft Prozessbar Marquee

    Hallo zusammen, ich halte mich schon ewig an einem kleinen Problem auf,
    und zwar bin ich dabei per filesystem Dateien in einen anderen Ordner zu kopieren, je nach menge und Größe kann sowas ja ewig dauern.
    Damit der Benutzer nicht denkt ich will ihn verarschen soll eine einfache Prozessbar mit dem Style Marquee laufen.
    Jedoch passiert beim kopieren nichts, die Prozessbar kommt nicht dazu anzufangen.
    Das selbe mache ich mit DotNetzip, und hier habe ich ein Beispiel:

    VB.NET-Quellcode

    1. Public Sub packeri()
    2. Try
    3. Form1.ProgressBar1.Style = ProgressBarStyle.Marquee
    4. Dim ttbrt As New String(Application.StartupPath)
    5. Using zip As ZipFile = New ZipFile()
    6. zip.AddDirectory(ttbrt & "\temp\")
    7. zip.Save(ttbrt & "\backup\" + Form1.TextBox1.Text + ".bcb")
    8. System.IO.Directory.Delete(ttbrt & "\temp\", True)
    9. System.IO.Directory.CreateDirectory(ttbrt & "\temp\")
    10. End Using
    11. MsgBox("Backup erfolgreich erstellt: " + ttbrt + "\backup\")
    12. Form1.ProgressBar1.Style = ProgressBarStyle.Blocks
    13. Catch ex As Exception
    14. MsgBox("Error 705")
    15. End Try
    16. End Sub


    Ich habe einfach den Prozessbar Style im laufe der Aktion geändert, es klappt nicht und ich wüsste auch nicht wie ich es ans laufen bringe.
    kann mir einer einen tipp geben wie ich die Prozessbar schon vorher Aktiviert bekomme?

    Lg.L
    Nun , der Progressbar ist ja nichts anderes als ein Ladebalken mit 2 wichtigen Werten
    • Maximumwert (Progressbar.Maximum)
    • Aktueller Wert (Progressbar.Value)
    Am Anfang setzt Du den Maximalwert (in deinem Beispiel vielleicht als Anzahl der Dateien), den aktuellen Wert auf 0 und wenn Du 1 Datei kopiert hast setzt Du den Wert value um 1 hoch.

    MSDN hat hier genau so ein Beispiel gewählt um die Progressbar zu erklären.
    Also er braucht gar keinen wert, deshalb auch (Marquee) Style.
    er soll eigentlich nur diesen Style anfangen und am ende wenn alle Funktionen beendet sind wieder auf (Aus) .Block Style.
    Er muss keine %te besitzen nur anzeigen das irgendwas am rödeln ist.

    LG.L

    //Edit @singu
    Eine Fehlermeldung kommt nicht jedoch fängt die Prozessbar erst gar nicht an.

    Lawliet schrieb:

    Also er braucht gar keinen wert, deshalb auch (Marquee) Style.

    Da hast Du natürlich recht, ich habe den Style bisher allerdings nie verwendet.

    Habs gerade mal ausprobiert: bei mir läuft die Progressbar mit Marquee auch nicht, hab allerdings auch einen speziellen XP Style bei mir drauf (SevenVGBlack). Auf einem normalen XP System in der VirtualBox läuft es problemlos.
    Ja, das könnte sein, ich habe das jetzt in einen Background Worker gesteckt.
    ich habe am ende des Backgroundworkers auf ein Modul geleitet welches den Progressbar Style wieder in Block stellen soll.
    allerdings tut sich da nichts, kann es sein das man im Backgroundworker das irgendwie verhindert?

    Lg.L
    Button der den Prozess Startet:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. ProgressBar1.Style = ProgressBarStyle.Marquee
    3. mystatus.Text = "Dateien werden zusammengetragen..."
    4. Button1.Visible = False
    5. dework1.RunWorkerAsync()
    6. End Sub
    7. Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles dework1.DoWork
    8. Dim etope As New String(My.Settings.etope)
    9. Dim secume As New String(Application.StartupPath)
    10. Dim userN As New String(My.Settings.userN)
    11. If CheckBox1.CheckState = CheckState.Checked Then
    12. My.Computer.FileSystem.CreateDirectory(secume & "\temp\etopelister")
    13. My.Computer.FileSystem.CopyDirectory(etope & "\", secume & "\temp\etopelister")
    14. End If
    15. If CheckBox2.CheckState = CheckState.Checked Then
    16. My.Computer.FileSystem.CreateDirectory(secume & "\temp\Eigene Dateien")
    17. My.Computer.FileSystem.CopyDirectory(userN & "\Documents", secume & "\temp\Eigene Dateien")
    18. End If
    19. If CheckBox3.CheckState = CheckState.Checked Then
    20. My.Computer.FileSystem.CreateDirectory(secume & "\temp\Eigene Bilder")
    21. My.Computer.FileSystem.CopyDirectory(userN & "\Pictures", secume & "\temp\Eigene Bilder")
    22. End If
    23. If CheckBox5.CheckState = CheckState.Checked Then
    24. ' My.Computer.FileSystem.CopyFile(sHome & "\User Data\Default\Bookmarks", asbi & "\temp\Default\Bookmarks")
    25. ' My.Computer.FileSystem.CopyFile(sHome & "\User Data\Default\Bookmarks.bak", asbi & "\temp\Default\Bookmarks.bak")
    26. End If
    27. If CheckBox6.CheckState = CheckState.Checked Then
    28. My.Computer.FileSystem.CreateDirectory(secume & "\temp\Desktop")
    29. My.Computer.FileSystem.CopyDirectory(userN & "\Desktop", secume & "\temp\Desktop")
    30. End If
    31. packeri()
    32. End Sub


    packeri Modul

    VB.NET-Quellcode

    1. Module packerx
    2. Public Sub packeri()
    3. Try
    4. Dim ttbrt As New String(Application.StartupPath)
    5. Using zip As ZipFile = New ZipFile()
    6. zip.AddDirectory(ttbrt & "\temp\")
    7. zip.Save(ttbrt & "\backup\" + Form1.TextBox1.Text + ".bcb")
    8. System.IO.Directory.Delete(ttbrt & "\temp\", True)
    9. System.IO.Directory.CreateDirectory(ttbrt & "\temp\")
    10. End Using
    11. MsgBox("Backup erfolgreich erstellt: " + ttbrt + "\backup\")
    12. Catch ex As Exception
    13. MsgBox("Error 705")
    14. End Try
    15. Form1.ProgressBar1.Style = ProgressBarStyle.Blocks
    16. Form1.mystatus.Text = "Done"
    17. Form1.Button1.Visible = True
    18. End Sub
    19. End Module
    Ja ^^ ich weiß sonst nicht wie ich es machen soll singu,
    direkt im Backgroundworker auf die Progressbar geht nicht, das habe ich schon probiert
    wie genau meinst du das?
    bei dem Codeabschnitt backgroundworker1.RunWorkerAsync <- Parameter
    sry habe mich noch nie so genau mit dem backgroundworker beschäftigt, nur teilweise.
    Vielen Dank singu, aber ich blicke da nicht ganz durch.
    würde aber nichts ausmachen wenn du mir sagen könntest ob es legal wäre von backgroundworker1_RunWorkerCompleted
    auf ein Modul zu lenken, es funktioniert schon mal Ausnahme los, nur weiß ich nicht ob der Backgroundworker noch aktiv arbeitet und das Programm auch Crashen kann.

    LG.L