Threading - Anfängerprobleme - bitte Hilfe!

proprogger

Mitglied
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:
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:
Public t as New Thread(AddressOf Download)

und die Methode so:

Code:
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!
 
Zuletzt bearbeitet:
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...)
 
Zurück