Grafische Oberfläche wird beim kopieren zu großer Daten nicht geladen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Adam.

    Grafische Oberfläche wird beim kopieren zu großer Daten nicht geladen

    Hallo zusammen,

    bin relativ neu in der Programmierung mit VB habe mir aber schon folgendes Datensicherungsscript geschrieben. Das Programm kopiert mir auch wunderbar, verschiebt mir die alten Sicherungen in die Ordner Sicherung 2+3 und löscht diese dann auch aus Sicherung3. Wenn Ich das mit Daten mache die ein paar MB groß sind, ist das alles kein Problem, mein Fenster geht auf, die Progressbar beginnt zu laufen und das Programm kopiert im Hintergrund. Wenn ich jetzt allerdings Daten kopieren will die 1-2 GB groß sind läuft das ganze so ab. Das Programm startet fängt an zu kopieren, aber mein Fenster wird entweder garnicht oder mit sehr viel Verzögerung erst nach ein paar Minuten geöffnet. Hab dann unten schon mal eine for schleife reingebaut damit der Kopiervorgang ein wenig verzögert wird, hilft aber auch nichts. Hat mir jemand ein Rad?^^ wäre sehr dankbar.


    VB.NET-Quellcode

    1. Public Class Begrüßung
    2. Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Dim folderExists As Boolean
    4. ProgressBar1.Value = 0
    5. Timer1.Start()
    6. On Error Resume Next
    7. My.Computer.FileSystem.DeleteDirectory("I:\Backup\Sicherung3", FileIO.DeleteDirectoryOption.DeleteAllContents)
    8. My.Computer.FileSystem.CreateDirectory("I:\Backup\Sicherung3")
    9. My.Computer.FileSystem.MoveDirectory("I:\Backup\Sicherung2", "I:\Backup\Sicherung3")
    10. My.Computer.FileSystem.CreateDirectory("I:\Backup\Sicherung2")
    11. My.Computer.FileSystem.MoveDirectory("I:\Backup\Sicherung1", "I:\Backup\Sicherung2")
    12. My.Computer.FileSystem.CreateDirectory("I:\Backup\Sicherung1")
    13. For Zeit As Integer = 1 To 10
    14. Next
    15. 'My.Computer.FileSystem.CopyDirectory("C:\test", "I:\Backup\Sicherung1")
    16. End Sub
    17. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    18. If ProgressBar1.Value < 100 Then
    19. ProgressBar1.Value += 1
    20. Else : End
    21. End If
    22. End Sub
    23. Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
    24. System.Diagnostics.Process.Start("www....de")
    25. End Sub
    26. End Class
    Hallo,

    benutze die WinAPI um die sachen zu kopieren/verschieben und mach es am besten gleich Rekursiv...weil das was du machst ist unnötig...xD ganz besonders die schleife am ende des Loadereignisses...außerdem lass bitte On Error Resume Next weg und nehm einen Try Catch Block

    Mfg jvbsl
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hi!
    Der Sinn der Form_Load-Prozedur ist es, einige Werte zuzuweisen, BEVOR die Form angezeigt wird. Insofern ist die Load-Prozedur der falsche Ort dafür.
    Des weiteren sollte man rechenintensive Vorgänge in Threads auslagern, damit andere Vorgänge (z.B. das Anzeigen einer Progressbar) nicht behindert werden.

    LG
    Hallo,

    genau dafür gibt es das Shown Event, aber man kann das anzeigen des Formulars, im Load Ereignis mit Me.Show auch erzwingen, dies macht man bei DirectX anwendungen im Normalfall...

    Mfg jvbsl
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---