469,568 Members | 1,547 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,568 developers. It's quick & easy.

HTTP-Download (Multithreading)

Hello,

at the moment I'm not able to finish my program. That means, I have a
problem I can't solve myself. Therefore I'm asking those who already
worked with HttpWebRequest... and threads.

I'm writing some kind of download-manager, which is able to download
several files parallely. Therefore I've created a class implementing the
download function and use four threads which use four instances of the
class. This works fine, except the cancelling of downloads. After a
download-thread has been cancelled, it is not able to download any files
with this thread.

How the program works:
The source for the downloadclass I got from the .net-Documentation and
enhanced in some points.
The download form has arrays for the class-instances, boolvalues
(instance busy or not) and threads (calling StartDownload-function of
classes).
A timer (timWatchTimer) cares for the single threads. If a thread is not
busy anymore (boolvalue bThreadWorking) the next download is started for
this thread (StartNextDownload).

I removed all unnecessary code for a better overview. The sample project
can be found at:
http://vbtricks.vb.funpic.de/vbarchiv/dstest.zip.
The sample has been written using SharpDevelop, but in the subfolder VS
you find a VS-export of the project. The source does have comments but
if there any questions, please don't hesitate to ask them. I'm really up
to solve this problem as I want to finish my program.
Please help me,

Stefan
--
___________________________________www.VBTricks.de .vu
the free resource for Visual Basic, Gambas and Pascal
components, tips & complete projects

www: http://www.VBTricks.de.vu
mail: vbtricks <at> gmx <dot> net
__________________________________________________ ___
Nov 21 '05 #1
4 1570
Hi,

If you are using windows xp bits might be best way to go.

http://msdn.microsoft.com/library/de...un02282003.asp

Ken
---------------
"VBTricks.de.vu Webmaster" <no****@thisserverdoesntexist.com> wrote in
message news:uW**************@TK2MSFTNGP09.phx.gbl...
Hello,

at the moment I'm not able to finish my program. That means, I have a
problem I can't solve myself. Therefore I'm asking those who already
worked with HttpWebRequest... and threads.

I'm writing some kind of download-manager, which is able to download
several files parallely. Therefore I've created a class implementing the
download function and use four threads which use four instances of the
class. This works fine, except the cancelling of downloads. After a
download-thread has been cancelled, it is not able to download any files
with this thread.

How the program works:
The source for the downloadclass I got from the .net-Documentation and
enhanced in some points.
The download form has arrays for the class-instances, boolvalues
(instance busy or not) and threads (calling StartDownload-function of
classes).
A timer (timWatchTimer) cares for the single threads. If a thread is not
busy anymore (boolvalue bThreadWorking) the next download is started for
this thread (StartNextDownload).

I removed all unnecessary code for a better overview. The sample project
can be found at:
http://vbtricks.vb.funpic.de/vbarchiv/dstest.zip.
The sample has been written using SharpDevelop, but in the subfolder VS
you find a VS-export of the project. The source does have comments but
if there any questions, please don't hesitate to ask them. I'm really up
to solve this problem as I want to finish my program.
Please help me,

Stefan
--
___________________________________www.VBTricks.de .vu
the free resource for Visual Basic, Gambas and Pascal
components, tips & complete projects

www: http://www.VBTricks.de.vu
mail: vbtricks <at> gmx <dot> net
__________________________________________________ ___
Nov 21 '05 #2
I wonder if you shouldnt read the data sent from the web server before
closing down the connection. Like this I guess:

Dim asynchronousInputRead As IAsyncResult = _
responseStream.BeginRead(myRequestState.BufferRead , _
0, 1024, _
New AsyncCallback(AddressOf ReadCallBack), _
myRequestState)
' Now try and close
FinishedProc(StatusCodes.iErrorOccurred, _
ErrorCodes.iUserCancelled)
"VBTricks.de.vu Webmaster" <no****@thisserverdoesntexist.com> skrev i
melding news:uW**************@TK2MSFTNGP09.phx.gbl...
Hello,

at the moment I'm not able to finish my program. That means, I have a
problem I can't solve myself. Therefore I'm asking those who already
worked with HttpWebRequest... and threads.

I'm writing some kind of download-manager, which is able to download
several files parallely. Therefore I've created a class implementing the
download function and use four threads which use four instances of the
class. This works fine, except the cancelling of downloads. After a
download-thread has been cancelled, it is not able to download any files
with this thread.

How the program works:
The source for the downloadclass I got from the .net-Documentation and
enhanced in some points.
The download form has arrays for the class-instances, boolvalues (instance
busy or not) and threads (calling StartDownload-function of classes).
A timer (timWatchTimer) cares for the single threads. If a thread is not
busy anymore (boolvalue bThreadWorking) the next download is started for
this thread (StartNextDownload).

I removed all unnecessary code for a better overview. The sample project
can be found at:
http://vbtricks.vb.funpic.de/vbarchiv/dstest.zip.
The sample has been written using SharpDevelop, but in the subfolder VS
you find a VS-export of the project. The source does have comments but if
there any questions, please don't hesitate to ask them. I'm really up to
solve this problem as I want to finish my program.
Please help me,

Stefan
--
___________________________________www.VBTricks.de .vu
the free resource for Visual Basic, Gambas and Pascal
components, tips & complete projects

www: http://www.VBTricks.de.vu
mail: vbtricks <at> gmx <dot> net
__________________________________________________ ___


Nov 21 '05 #3
On 2005-07-07, VBTricks.de.vu Webmaster <no****@thisserverdoesntexist.com> wrote:
Hello,

at the moment I'm not able to finish my program. That means, I have a
problem I can't solve myself. Therefore I'm asking those who already
worked with HttpWebRequest... and threads.

I'm writing some kind of download-manager, which is able to download
several files parallely. Therefore I've created a class implementing the
download function and use four threads which use four instances of the
class. This works fine, except the cancelling of downloads. After a
download-thread has been cancelled, it is not able to download any files
with this thread.

How the program works:
The source for the downloadclass I got from the .net-Documentation and
enhanced in some points.
The download form has arrays for the class-instances, boolvalues
(instance busy or not) and threads (calling StartDownload-function of
classes).
A timer (timWatchTimer) cares for the single threads. If a thread is not
busy anymore (boolvalue bThreadWorking) the next download is started for
this thread (StartNextDownload).

I removed all unnecessary code for a better overview. The sample project
can be found at:
http://vbtricks.vb.funpic.de/vbarchiv/dstest.zip.
The sample has been written using SharpDevelop, but in the subfolder VS
you find a VS-export of the project. The source does have comments but
if there any questions, please don't hesitate to ask them. I'm really up
to solve this problem as I want to finish my program.
Please help me,

Stefan


If your on a 2K or higher system and don't need to support 9x, then I
agree with Ken - use BITS. If you don't like the wrapper in the article
he pointed out, I have one that I wrote in C# ages ago :) And, yes, the
library does work with VB.NET. In fact, when I wrote it - I wrote the
wrapper in C#, but wrote the test app in VB.NET to make sure it would
work...
Anyway, as for the threads... I haven't really looked at the code so
I'm not sure what your doing here. I just wanted to interject my support
of BITS :) I have downloaded the project, and if I get a moment, I'll
see if I can see anything that strikes me as out of place :)

--
Tom Shelton [MVP]
Nov 21 '05 #4
Hello,

sorry for replying that late. The problem could be fixed by ensuring
that the response-stream has been closed when the download is cancelled.
Stefan

--
___________________________________www.VBTricks.de .vu
the free resource for Visual Basic, Gambas and Pascal
components, tips & complete projects

www: http://www.VBTricks.de.vu
mail: vbtricks <at> gmx <dot> net
__________________________________________________ ___
Nov 21 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

7 posts views Thread by Michael Foord | last post: by
8 posts views Thread by turnit \(removethis\) | last post: by
3 posts views Thread by ashesdesign | last post: by
5 posts views Thread by David Lozzi | last post: by
4 posts views Thread by Bob Badger | last post: by
1 post views Thread by zpinhead | last post: by
16 posts views Thread by Harry Simpson | last post: by
reply views Thread by suresh191 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.