Async-Download - Code anhalten bis Download beendet. Kleines Problem :I

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von wasserbombe3000.

    Async-Download - Code anhalten bis Download beendet. Kleines Problem :I

    hi,

    hätte da mal ein Problem bei dem Ich nicht weiterkomme. Ich hab im unteren Code einen Async http Download mit Progress-bar. Es soll erst nach diesem Download weitergemacht werden mit dem Skript. Das bekomme Ich zwar hin aber es wird ein Teil übersprungen. Wen Ich das Skript ohne den Download ausführe geht alles ganz normal durch. Wie mache Ich VB denn klar, das es erst nach dem Download in geordneter Reihenfolge weitergeht?

    Es wird also nachdem der DL fertig ist, der komplette Teil mit 7zip übersprungen. (Das Löschen der zwei Pfade wird noch gemacht). Ich hab da echt nicht soviel plan von wie Ich das machen muss...

    Quellcode

    1. Imports System.Net
    2. Imports System.Net.Mail
    3. Imports System.IO
    4. Imports System.Environment
    5. Imports System.Diagnostics
    6. Public Class Form1
    7. Dim WithEvents myWebClient As New WebClient
    8. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    9. Me.Text = "Download wird gestartet..."
    10. ProgressBar1.Visible = True
    11. Button1.Visible = False
    12. myWebClient.DownloadFileAsync(New Uri("http://XXX.7z"), "C:\XXX.7z")
    13. End Sub
    14. Private Sub myWebClient_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles myWebClient.DownloadProgressChanged
    15. Me.Text = e.ProgressPercentage & " %"
    16. ProgressBar1.Value = e.ProgressPercentage
    17. Label1.Text = (e.BytesReceived / 1024).ToString("0.##") & " KB von " & (e.TotalBytesToReceive / 1024).ToString("0.##") & " KB geladen"
    18. End Sub
    19. Private Sub DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles myWebClient.DownloadFileCompleted
    20. myWebClient.Dispose()
    21. 'Loescht die alten Daten'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    22. My.Computer.FileSystem.DeleteDirectory("C:\x\x",
    23. FileIO.DeleteDirectoryOption.DeleteAllContents)
    24. My.Computer.FileSystem.DeleteDirectory("C:\x\xx",
    25. FileIO.DeleteDirectoryOption.DeleteAllContents)
    26. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    27. 'Entpackt das Update und kopiert Datenbank
    28. Dim SevenZip As New System.Diagnostics.Process
    29. SevenZip.StartInfo.FileName = "C:\7z.exe"
    30. SevenZip.StartInfo.Arguments = "x C:\xxx.7z -oc:x -p!!!!! -y"
    31. SevenZip.Start()
    32. SevenZip.WaitForExit()
    33. Select Case SevenZip.ExitCode
    34. Case 0 : MessageBox.Show("Update has been installed successfully!")
    35. Case 1 : MessageBox.Show("7-Zip: Error")
    36. Case 2 : MessageBox.Show("7-Zip: Error")
    37. Case 7 : MessageBox.Show("7-Zip: Command Line-Error")
    38. Case 8 : MessageBox.Show("7-Zip: Not enough space")
    39. Case 255 : MessageBox.Show("7-Zip: User abort")
    40. End Select
    41. 'Kopiert alte DB nach X
    42. System.IO.File.Copy("C:\sd-sicherung\x\db\x", "C:\x\x\db\x")
    43. Button1.Visible = False

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „wasserbombe3000“ ()

    wasserbombe3000 schrieb:

    Es soll erst nach diesem Download weitergemacht werden
    Dann mach das synchron, nicht aber asynchron.
    Du kannst auch den Code so verteilen, dass der Prä-Code mit dem Download endet, der Post-Code startet nach erfolgreichem Download.
    Und damit nix passiert, disablest Du die Form derweil.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    wasserbombe3000 schrieb:

    post code
    führst Du nach dem Finished-Event aus.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!