textfile2.txt
来自「编程环境VB.NET2005 多线程下载」· 文本 代码 · 共 73 行
TXT
73 行
Sub DoDownload()
If Me.m_nowPos = Me.m_endPos + 1 Then
Me.thisThNoErrStop = True
RaiseEvent thStop(Me, Me.MyThreadData)
Exit Sub
End If
Dim ns As System.IO.Stream = Nothing : Dim request As Net.HttpWebRequest
Dim fs As New IO.FileStream(Me.m_filename, System.IO.FileMode.Open, IO.FileAccess.Write, IO.FileShare.ReadWrite)
Dim b(bufferSize - 1) As Byte : Dim ret As Integer
Dim memB(memDisk - 1) As Byte
Try
request = CType(Net.HttpWebRequest.Create(Me.m_url), Net.HttpWebRequest)
'接收的起始位置及接收的长度
request.AddRange(CInt(Me.m_nowPos), CInt(Me.m_endPos))
'MsgBox("123:" & Me.m_startPos & Me.m_nowPos & Me.m_endPos)
ns = request.GetResponse.GetResponseStream
fs.Seek(Me.m_nowPos, IO.SeekOrigin.Begin)
Dim L As Integer = 0
Do
ret = ns.Read(b, 0, bufferSize)
If L + ret >= memDisk Then
fs.Write(memB, 0, L)
writeCount += 1
L = ret
Else
L += ret
End If
Array.Copy(b, 0, memB, L - ret, ret)
Me.m_speed += ret
Me.m_nowPos += ret
If Me.m_stop = True Then Exit Do
While speedlimit
' System.Threading.Thread.Sleep(100)
If Me.m_stop = True Then Exit Do
End While
'System.Threading.Thread.Sleep(200)
Loop Until ret = 0
fs.Write(memB, 0, L)
writeCount += 1
'ret = ns.Read(b, 0, bufferSize)
'While ret > 0
' If Me.m_stop = True Then Exit While
' fs.Write(b, 0, ret)
' Me.m_speed += ret
' Me.m_nowPos += ret
' While speedlimit
' System.Threading.Thread.Sleep(10)
' If Me.m_stop = True Then Exit While
' End While
' ret = ns.Read(b, 0, bufferSize)
'End While
Me.m_speed = 0
fs.Close()
ns.Close()
Me.thisThNoErrStop = True
RaiseEvent thStop(Me, Me.MyThreadData)
Catch ex As Exception
Me.thisThNoErrStop = False
RaiseEvent thStop(Me, Me.MyThreadData)
Debug.WriteLine("出错" & Now.ToString & " : " & ex.Message)
Finally
If fs Is Nothing = False Then fs.Close()
If ns Is Nothing = False Then ns.Close()
End Try
End Sub
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?