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 + -
显示快捷键?