Do Until & Downloader Problem

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Do Until & Downloader Problem

    Hey, folgender Code:

    VB.NET-Quellcode

    1. For each Datei2 in Listbox1.items
    2. downloader.DownloadFileAsync(New Uri(server & "/" & datei2), TextBox1.Text & "\" & ordner & "\" & datei2)
    3. Do Until downloader.IsBusy = False
    4. Application.DoEvents()
    5. Loop
    6. next


    Das Problem ist: Er lädt zwar jede Datei runter aber diese sind nur 0 kb groß
    Warum?

    Mfg

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „domipoppe“ ()

    domipoppe schrieb:

    Warum?
    Weil Du es falsch programmiert hast.

    VB.NET-Quellcode

    1. Private WithEvents downloader As System.Net.WebClient ' WebClient für Datei-Download
    2. Private Sub downloader_DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles downloader.DownloadFileCompleted
    3. ' hier den nächsten Download antriggern
    4. End Sub
    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!
    Wie soll ich den das in den DownloadFileCompleted Event eintragen?
    In der Listbox stehen mehrere Dateien, die dann per diesen Code heruntergeladen werden sollen.
    Deswegen das For Each.
    Ich kann ja nicht ermitteln welche Datei die erste ist und die als erstes herunterladen.
    Mfg
    Na Du hast einen Startindex und einen Endindex, der Startindes (0) wird bei ButtonClick gesetzt und das Download angestoßen.
    Wenn das File fertig ist, erhöhst Du den Index um eins, testest, ob der (Endindex+1) erreicht ist, ja: Fertich, nein: nächstes DownLoad.
    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!
    Kompletter EDIT:

    Der Code wurde nun in DownloadFileComplete übergebgen.
    Durch den Button wird die erste Datei heruntergeladen.

    Das Resultat ist aber das alle heruntergeladenen Dateien 0 kb groß sind, das gleiche Problem wie anfangs!

    Was mich stört ist das dieser CODE von oben schon funktioniert hat, den man kann diese dwn.isbusy Funktion gut verwenden, den sobald der Downloader NICHT mehr beschäftigt ist, macht er alles danach. Und dann wird geschrieben "ranzigster Code" was weiß ich, finde ich schon etwas komisch...

    Mfg

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

    domipoppe schrieb:

    Das Resultat ist aber das alle heruntergeladenen Dateien 0 kb groß sind
    Was passiert, wenn Du nur eine Datei runterladen willst?
    ----

    VB.NET-Quellcode

    1. Do Until downloader.IsBusy = False
    2. Application.DoEvents()
    3. Loop
    ist Grütze. Sorry.
    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!
    Oh ne. Application.DoEvents in einer verdammten Schleife?
    Wir brauchen hier echt mal nen 'Application.DoEvents - Wann und wann nicht' Thread.

    1. Google: Application.DoEvents MSDN -> Lesen und verstehen
    2. Event nehmen, Counter nehmen, Downloaden, nächstes.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    domipoppe schrieb:

    Komischerweiße das gleiche.
    Gibt es die Datei überhaupt?
    Was passiert, wenn Du sie im Explorer runterlädtst?
    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!
    Ich weiß nicht wo das Problem liegt wenn ich den String in der MsgBox ausgeben lasse habe ich den richtigen Link zu 100%.
    Aber wenn ich DownloadFileAsync zu DownloadFile änder gibt er 404 zurück, das heißt er findet Sie nicht.
    Wenn ich den kompletten Pfad eingebe gehts auch nicht.
    Das liegt alles local keine Ahnung warum das so rumspinnt...

    Mfg
    Lässt Du uns an Deinem Erfolg teilhaben?
    Die nächste praktisch identische Fragestellung kommt bestimmt.
    Danke. :thumbsup:
    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!