Programm hängt ich auf bei start

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Nixodas.

    Programm hängt ich auf bei start

    Hallo liebe com ich habe diesmal das Problem das das Programm dateien runterlädt bisher nur local zum testen und diese in eine ListbOx steckt die Objekte sind allerdings erst in der Listbox zu sehen sobald all dateien runtergeladen wurden

    wie kann ich das lösen?
    Was willst du lösen. Du beschreibst einen Zustand den du gemacht hast. Aber es gibt keine Frage?

    Bitte genauer beschreiben...
    okay sry war ein bisschen schwer verständlich ausgedrückt also
    ich habe einen Button der einen download startet
    die zu downloaden dateien sind in einer textfile eingetragen
    und werden ausgelesen
    beim Klick auf den button verschwindet dieser und eine ListBox, ein Label und eine ProgressBar werden sichtbar
    Nun zeigt sich aber nur die Progressbar und die listbox das Label ersst nach dem downloaden aller dateien
    außerdem:
    wenn eine datei fertig gedownloadet is wir dies in die listBox geschrieben doch die einträge werden erst sichtbar
    nach dem Download
    Nun, ohne zu schreiben wie die Dateien runtergeladen werden ist es schwierig die Ursache zu finden. Meistens jedoch ist der Grund dass kein Update auf Controls stattfinden kann weil dies z.B. im Background stattfindet und das "message pumping" noch nicht stattgefunden hat (application.doevents)

    Also bitte etwas mehr dazu schreiben wie der Dwonlöoad stattfindet.

    VB.NET-Quellcode

    1. For Each l In System.IO.File.ReadAllLines("dateien.txt")
    2. Try
    3. client.DownloadFile("file:///C:/Ordner/" & l, l)
    4. ListBox1.Items.Add(l)
    5. Catch
    6. ListBox1.Items.Add("Fehler bei: " & l)
    7. End Try
    8. Next


    So das is der code und ja das ganze ist in einer schleife wie man sieht
    aber wenn ich es ohne machen würde dann müsste ich ja jede datei ins programm schreiben und man könnte die dateien gar nicht mehr downloaden
    Wie vermutet erlaubt Deine Schleife keinen GUI-Update während sie läuft, wenn Du testweise ein Application.DoEvents nach dem ListBox.Add einsetzt sollte es funktionieren ( jetzt gibts bestimmt irgendeinen Puristen der hier was über schrecklichen Programmierstil schreibt).

    Besser wäre jedoch in diesem Fall das ganze inclusive Progressbar Update in einen Backgroundworker auszulagern, zum Beispiel wie in diesem Thread.

    Eine Kleinigkeit noch: exceptions immer gezielt abfangen, in diesem Fall WebException
    super danke das mit application.doevents hat gefunzt
    und ne Progressbar hab ich sowieso drinne kam nur iwie ent in den thread

    wenn er die jetzt auflistet und die einträge länger werden als die listbox
    kann man die dann irgendwie nach unten setzen?