HTTP-Download (Multithreading)

HTTP-Download (Multithreading)

Post by VBTricks.d » Sat, 09 Jul 2005 02:27:15


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://www.yqcomputer.com/
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.yqcomputer.com/
mail: vbtricks <at> gmx <dot> net
_____________________________________________________
 
 
 

HTTP-Download (Multithreading)

Post by Ken Tucker » Sat, 09 Jul 2005 06:07:42

Hi,

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

http://www.yqcomputer.com/

Ken
---------------
"VBTricks.de.vu Webmaster" < XXXX@XXXXX.COM > wrote in

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://www.yqcomputer.com/
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.yqcomputer.com/
mail: vbtricks <at> gmx <dot> net
_____________________________________________________

 
 
 

HTTP-Download (Multithreading)

Post by Inge Henri » Sat, 09 Jul 2005 06:52:06

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" < XXXX@XXXXX.COM > skrev i
 
 
 

HTTP-Download (Multithreading)

Post by Tom Shelto » Sat, 09 Jul 2005 14:37:21


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]
 
 
 

HTTP-Download (Multithreading)

Post by VBTricks.d » Mon, 18 Jul 2005 00:45:37

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.yqcomputer.com/
mail: vbtricks <at> gmx <dot> net
_____________________________________________________