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:
Wobei t der Thread ist, der für das herunterladen zuständig ist, d.h. er ist in der Klasse Datei so deklariert:
und die Methode so:
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!
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: