Hallo,
ich komme mit der Progressbar mit einem Timer nicht klar...
Ich möchte eine 1,55 GB-große Datei von einem Quellordner in einen ZielOrdner kopieren und während des Vorgangs den Speicherplatz der beiden Ordner vergleichen.
Wenn die Datei komplett in den Zielordner kopiert ist, dann soll die progressbar 100% haben (während des Vorgangs soll der Progressbar.Value den aktuellen Speicherplatz des Zielordners haben).
Das Problem ist (glaube ich), dass der Kopiervorgang abgeschlossen wird und dann erst der Progressbarbalken durchläuft.
Muss man das irgendwie parallel programmieren, dass der Kopiervorgang und die Speicherplatzabfrage parallel laufen?
Leider habe ich da noch gar keine Erfahrung...
Vielen Dank für die Hilfe im Voraus...
Viele Grüße,
kwon
ich komme mit der Progressbar mit einem Timer nicht klar...
Ich möchte eine 1,55 GB-große Datei von einem Quellordner in einen ZielOrdner kopieren und während des Vorgangs den Speicherplatz der beiden Ordner vergleichen.
Wenn die Datei komplett in den Zielordner kopiert ist, dann soll die progressbar 100% haben (während des Vorgangs soll der Progressbar.Value den aktuellen Speicherplatz des Zielordners haben).
Das Problem ist (glaube ich), dass der Kopiervorgang abgeschlossen wird und dann erst der Progressbarbalken durchläuft.
Muss man das irgendwie parallel programmieren, dass der Kopiervorgang und die Speicherplatzabfrage parallel laufen?
Leider habe ich da noch gar keine Erfahrung...
Vielen Dank für die Hilfe im Voraus...
Viele Grüße,
kwon
VB.NET-Quellcode
- Option Strict On
- Imports System.IO
- Public Class Form1
- Dim pfadB As String = "D:\a\zielOrdner\"
- Dim zielOrdner As New DirectoryInfo(pfadB)
- Dim speicherplatzQuellOrdner As Double
- Dim speicherplatzZielOrdner As Double
- Dim speicherplatzAnteilZielOrdner As Double
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim ProgressBar1 As New ProgressBar()
- Dim pfadA As String = "D:\a\quellOrdner\"
- Dim quellOrdner As New DirectoryInfo(pfadA)
- 'Progressbar
- ProgressBar1.Minimum = 0
- ProgressBar1.Maximum = 100
- Me.Timer1.Interval = 500
- Me.Timer1.Enabled = True
- Me.Timer1.Start()
- 'von quellOrdner nach zielOrdner kopieren
- FileCopy(pfadA & "testfilm.avi", pfadB & "testfilm.avi")
- 'Speicherplatz QuellOrdner (statisch = 1x ermitteln)
- speicherplatzQuellOrdner = getFolderSize(quellOrdner)
- speicherplatzQuellOrdner = Math.Round(speicherplatzQuellOrdner / (1024 * 1024 * 1024), 2)
- End Sub
- Function getFolderSize(folder As DirectoryInfo) As Long
- Dim speicherplatz As Long
- Dim files As String() = Directory.GetFiles(folder.FullName, "*.*", SearchOption.AllDirectories)
- For Each file As String In files
- Dim fileinfo As New FileInfo(file)
- speicherplatz += fileinfo.Length
- Next
- Return speicherplatz
- End Function
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Me.Timer1.Enabled = False
- End Sub
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- 'Speicherplatz ZielOrdner (dynamisch = mit Timer ermitteln)
- speicherplatzZielOrdner = getFolderSize(zielOrdner)
- speicherplatzZielOrdner = Math.Round(speicherplatzZielOrdner / (1024 * 1024 * 1024), 2)
- 'SpeicherplatzAnteil ZielOrdner
- speicherplatzAnteilZielOrdner = Math.Round(speicherplatzZielOrdner / speicherplatzQuellOrdner, 2) * 100
- ProgressBar1.Value = speicherplatzAnteilZielOrdner
- If ProgressBar1.Value >= 100 Then
- Me.Timer1.Stop()
- Me.Timer1.Enabled = False
- End If
- End Sub
- End Class