tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
261
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    proprogger proprogger ist offline Mitglied Bronze
    Registriert seit
    Dec 2005
    Beiträge
    34
    Hi!

    Habe noch nicht sehr viel mit Threads rumgemacht, aber wie es grundsätzlich geht, weiß ich.
    Folgendes Programm habe ich gemacht:
    Es sollen bis zu 10 Dateien per HTTP heruntergeladen werden. An sich kein Problem.
    Ich habe für jede Datei eine Klasse, damit ich ein paar Daten damit verwalten kann.
    In dieser Klasse habe ich eine Methode, die die Datei herunterlädt.
    Außerhalb der Klasse werden in einer Schleife die bis zu 10 Objekte, in einem Array angelegt, wie gefolgt angesprochen:


    Code :
    1
    2
    3
    4
    5
    
    Dim File(9) as Datei 'zunächst werden sie natürlich initialisiert (File(x) = new Datei("http://..."))
    ...
    For i as Integer = 0 to 9
      File(i).t.Start() 'Thread aufrufen, der die Datei herunterladen soll
    Next

    Wobei t der Thread ist, der für das herunterladen zuständig ist, d.h. er ist in der Klasse Datei so deklariert:

    Code :
    1
    
    Public t as New Thread(AddressOf Download)

    und die Methode so:

    Code :
    1
    2
    3
    4
    
    Sub Download()
       Dim req as HttpWebRequest = WebRequest.Create(URL)
       ...
    End Sub

    Damit ich den Status mit verfolgen kann, habe ich nach dem Threadabruf eine grafische Statusänderung eingebaut. Bevor ich auf Threads "umgestiegen" bin und sequentiell die Dateien heruntergeladen wurden, ging es auch noch. Doch nun bleibt das Programm an dieser Stelle (t.Start()) stehen, d.h. keine Statusänderung erfolgt, aber schiebe ich den Befehl zur Statusänderung vor t.Start(), so zählt er auf 10...

    Kann man sich das so etwa vorstellen?
    Wo kann das Problem liegen?
    Darf ich keine Arrays verwenden bzw habe ich etwas nicht beachtet von dem ich leider noch keine Ahnung habe?

    Mein Problem ist, dass ich das Programm nicht debuggen kann: Auf einem PC hab ich kein Internet, auf dem anderen kein .NET... Kann nur per MsgBoxes einigermaßen Problemstellen analysieren, aber wie gesagt, das einzige was ich feststellen kann, ist, dass der Hauptthread bis vor den ersten Threadaufruf geht und die Threads (t) nie ausgeführt werden...

    Danke im Voraus!
    Geändert von proprogger (01.08.07 um 23:44 Uhr)
     

  2. #2
    proprogger proprogger ist offline Mitglied Bronze
    Registriert seit
    Dec 2005
    Beiträge
    34
    OK, ich glaube ich habe den Fehler gefunden:
    Ich habe den Thread zum herunterladen in den Konstruktor der Datei-Klasse reingepackt (Initialisierung des Threads und Start), d.h. der Thread wird nun nicht mehr "von außen" sondern "von innen" gestartet. Nun gehts zumindest soweit wie ich getestet habe (hab ziemlich viel rauskommentiert, deswegen passiert jetzt fast nix mehr...)
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 12.02.08, 19:26
  2. Threading hilfe
    Von Fridulin im Forum .NET Archiv
    Antworten: 6
    Letzter Beitrag: 05.04.05, 14:37
  3. HILFE! Morgen Arbeit! Anfängerfragen..bitte um Hilfe!
    Von Da Damn Cam im Forum Delphi, Kylix, Pascal
    Antworten: 2
    Letzter Beitrag: 04.10.04, 15:24
  4. BITTE BITTE HILFE ''Laufzeitfehler 713'
    Von anyaa im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 26.04.04, 10:44