vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Löschen eines Verzeichnisses mit einer Progressbar 
Autor: Maas
Datum: 12.01.10 15:39

Hier mal ein Beispiel für asynchrones Löschen mit ProgressBar.

Imports System.ComponentModel
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        Dim dir As New IO.DirectoryInfo("d:/ein/ordner")
        Dim files() As IO.FileInfo = dir.GetFiles("*.*", _
          IO.SearchOption.AllDirectories)
        StartDeleting(files)
    End Sub
 
    'gesamte größe aller files
    Private Function EntireSizeInKiloBytes(ByVal files() As IO.FileInfo) As _
      Double
        Dim size As Double = 0
        For Each file As IO.FileInfo In files
            size += file.Length / 1024
        Next
        Return size
    End Function
 
    Private Sub StartDeleting(ByVal files() As IO.FileInfo)
        ProgressBar1.Maximum = CInt(EntireSizeInKiloBytes(files))
        ProgressBar1.Minimum = 0
        ProgressBar1.Value = 0
        'bgw deklarieren, events setzen und starten
        Dim bgw As New BackgroundWorker
        AddHandler bgw.DoWork, AddressOf bgw_DoWork
        AddHandler bgw.ProgressChanged, AddressOf bgw_ProgressChanged
        AddHandler bgw.RunWorkerCompleted, AddressOf bgw_RunWorkerCompleted
        bgw.WorkerReportsProgress = True
        bgw.WorkerSupportsCancellation = True
        bgw.RunWorkerAsync(files) 'die files als user argument übergeben
    End Sub
 
    Private Sub bgw_DoWork(ByVal sender As System.Object, ByVal e As _
      System.ComponentModel.DoWorkEventArgs)
        Dim bgw As BackgroundWorker = CType(sender, BackgroundWorker)
        'die files aus dem user argument holen
        Dim files() As IO.FileInfo = TryCast(e.Argument, IO.FileInfo())
        If files IsNot Nothing Then
            Dim entireSize As Double = EntireSizeInKiloBytes(files)
            Dim deletedSize As Double = 0
            For Each file As IO.FileInfo In files
                If bgw.CancellationPending Then
                    ' wenn abgebrochen werden soll; bgw müsste dann aber wieder 
                    ' global definiert werden oder sonstwo zwichengespeichert 
                    ' werden um darauf zuzugreifen
                    Exit For
                Else
                    'file.Delete()
                    Threading.Thread.Sleep(CInt(file.Length / 1024 / 8)) _
                      'anstatt ich meine files lösche ;-)
                    deletedSize += file.Length / 1024
                    bgw.ReportProgress(CInt(deletedSize))
                End If
            Next
            Debug.WriteLine(entireSize - deletedSize)
        End If
    End Sub
 
    Private Sub bgw_ProgressChanged(ByVal sender As Object, ByVal e As _
      System.ComponentModel.ProgressChangedEventArgs)
        'durch umwandlung in Integer (in DoWork) kann eine aufrundung das 
        ' maximum am ende (wahrscheinlich letzte file) übersteigen, muss aber 
        ' nicht sein
        If e.ProgressPercentage <= ProgressBar1.Maximum Then : _
          ProgressBar1.Value = e.ProgressPercentage
        Else : ProgressBar1.Value = ProgressBar1.Maximum
        End If
    End Sub
 
    Private Sub bgw_RunWorkerCompleted(ByVal sender As Object, ByVal e As _
      System.ComponentModel.RunWorkerCompletedEventArgs)
        'jetzt nur noch die events entfernen
        Dim bgw As BackgroundWorker = CType(sender, BackgroundWorker)
        RemoveHandler bgw.DoWork, AddressOf bgw_DoWork
        RemoveHandler bgw.ProgressChanged, AddressOf bgw_ProgressChanged
        RemoveHandler bgw.RunWorkerCompleted, AddressOf bgw_RunWorkerCompleted
        ProgressBar1.Value = 0
        MsgBox("habe fertig")
    End Sub
Maas

Beitrag wurde zuletzt am 12.01.10 um 15:53:27 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Löschen eines Verzeichnisses mit einer Progressbar3.347Bismosa10.01.10 17:02
Re: Löschen eines Verzeichnisses mit einer Progressbar2.343nrg.net11.01.10 10:07
Re: Löschen eines Verzeichnisses mit einer Progressbar2.641Bismosa12.01.10 13:57
Re: Löschen eines Verzeichnisses mit einer Progressbar2.672Maas12.01.10 15:39
Re: Löschen eines Verzeichnisses mit einer Progressbar2.428Bismosa12.01.10 20:08
Re: Löschen eines Verzeichnisses mit einer Progressbar2.426Maas13.01.10 09:54
Re: Löschen eines Verzeichnisses mit einer Progressbar2.639Bismosa13.01.10 22:04
Re: Löschen eines Verzeichnisses mit einer Progressbar2.321Maas14.01.10 00:03
Re: Löschen eines Verzeichnisses mit einer Progressbar2.233Bismosa15.01.10 11:29
Re: Löschen eines Verzeichnisses mit einer Progressbar2.251keco15.01.10 15:57
Re: Löschen eines Verzeichnisses mit einer Progressbar2.324Bismosa21.01.10 09:40
Re: Löschen eines Verzeichnisses mit einer Progressbar2.220Maas21.01.10 09:44
Re: Löschen eines Verzeichnisses mit einer Progressbar2.302Bismosa21.01.10 10:28
Re: Löschen eines Verzeichnisses mit einer Progressbar2.326Bismosa21.01.10 11:24
Re: Löschen eines Verzeichnisses mit einer Progressbar2.231Maas21.01.10 14:50
Re: Löschen eines Verzeichnisses mit einer Progressbar2.410Bismosa25.01.10 12:03
Re: Löschen eines Verzeichnisses mit einer Progressbar2.363Bismosa08.03.10 16:17
Re: Löschen eines Verzeichnisses mit einer Progressbar2.234ModeratorFZelle08.03.10 16:42
Re: Löschen eines Verzeichnisses mit einer Progressbar2.312Bismosa08.03.10 17:15
Re: Löschen eines Verzeichnisses mit einer Progressbar2.237Maas08.03.10 17:23
Re: Löschen eines Verzeichnisses mit einer Progressbar2.363Bismosa09.03.10 09:07
Re: Löschen eines Verzeichnisses mit einer Progressbar2.285Maas09.03.10 09:21
Re: Löschen eines Verzeichnisses mit einer Progressbar2.229Bismosa09.03.10 10:14
Re: Löschen eines Verzeichnisses mit einer Progressbar2.328Micke12.01.10 16:28

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel