⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class1.vb

📁 编程环境VB.NET2005 多线程下载
💻 VB
字号:
'Imports System.Text
'Public Class MyDownloadTask0755backup

'    Dim savePathfilename As String
'    Dim downUrl, refUrl, notetxt As String
'    Dim downThreadAmount As Integer
'    Private m_TaskInfo As MyDownTaskStru
'    Public Property MyTaskInfo() As MyDownTaskStru
'        Get
'            Return m_TaskInfo
'        End Get
'        Set(ByVal value As MyDownTaskStru)
'            m_TaskInfo = value

'        End Set
'    End Property

'    Friend thColl As New Collection
'    Private WithEvents myTimer As New Timer
'    Friend Event errorInfo()
'    Friend showDetail As Boolean
'    Private Sub myTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles myTimer.Tick
'        'Computer(CInt(500 / Me.thColl.Count))
'    End Sub

'    Sub SaveToAccess(ByVal url As String, ByVal savePathFilename As String, ByVal tAmount As Integer)
'        ' TextBox4.Text = DateTime.Now.ToString '引用文本
'        Dim filesize As Long
'        Dim req As Net.HttpWebRequest
'        Try
'            req = CType(Net.HttpWebRequest.Create(url), Net.HttpWebRequest)
'            filesize = req.GetResponse.ContentLength
'            If filesize < tAmount Then tAmount = CInt(filesize) '假如文件非常小
'            '快速建立目标文件
'            Using fs As System.IO.FileStream = IO.File.Create(savePathFilename)
'                fs.Seek(filesize - 1, IO.SeekOrigin.End) '
'                fs.WriteByte(0)
'            End Using
'            While Not My.Computer.FileSystem.FileExists(savePathFilename)
'                System.Threading.Thread.Sleep(100) '等一下
'            End While
'            req.Abort()
'        Catch ex As Exception
'            RaiseEvent errorInfo()
'            MessageBox.Show(ex.Message)
'        End Try
'        '根据线程数初始化数组
'        Dim tStartPos() As Long = New Long(tAmount - 1) {} '每个线程接收文件的起始位置
'        Dim tNowPos() As Long = New Long(tAmount - 1) {}
'        Dim tEndPos() As Long = New Long(tAmount - 1) {} '每个线程接收文件的长度
'        '//计算每个线程应该接收文件的大小
'        Dim filePartSize As Integer = CInt(filesize / tAmount) '文件每部分长度
'        Dim fileRemainSize As Long = filesize - (filePartSize * tAmount) '剩余部分长度
'        '//为数组赋值
'        For i As Integer = 0 To tAmount - 1
'            tStartPos(i) = filePartSize * i '每个线程接收文件的起始点
'            tNowPos(i) = tStartPos(i)
'            tEndPos(i) = filePartSize - 1  '每个线程接收文件的长度
'        Next
'        tEndPos(tAmount - 1) += fileRemainSize '最后一部分要长一点1 or 2 byte
'        ' 保存到数据库
'        Dim sb As New System.Text.StringBuilder
'        For j As Integer = 0 To tAmount - 1
'            ' sb.Append("#" & tStartPos(j) & ":" & tStartPos(j) & ":" & tEndPos(j))
'            sb.Append("#" & tStartPos(j) & ":" & tNowPos(j) & ":" & tEndPos(j))
'        Next
'        Dim temp As String = sb.ToString, s1, s2 As String
'        If temp.Length > 255 Then '如果太长就分成两部分
'            s1 = temp.Substring(0, 255)
'            s2 = temp.Substring(255, temp.Length - 255)
'        Else
'            s1 = temp
'            s2 = ""
'        End If
'        Using conn As New Data.OleDb.OleDbConnection(connStr)
'            Dim com As New Data.OleDb.OleDbCommand("", conn)
'            Dim comtext As String
'            com.Parameters.Add("@Filename", OleDb.OleDbType.VarChar).Value = savePathFilename
'            com.Parameters.Add("@url", OleDb.OleDbType.VarChar).Value = url
'            com.Parameters.Add("@thread", OleDb.OleDbType.VarChar).Value = s1
'            com.Parameters.AddWithValue("@thread2", s2)
'            'com.Parameters.Add("@datetime", OleDb.OleDbType.VarChar).Value = Now.ToString
'            comtext = "INSERT INTO 下载数据 (Filename,Url,Thread,Thread2) VALUES (@Filename,@Url,@thread,@Thread2)"
'            com.CommandText = comtext
'            conn.Open()
'            com.ExecuteNonQuery()
'            com.Dispose()
'        End Using
'        StartTask()
'    End Sub
'    Sub StopTask()
'        For Each t As MyDownThread In Me.thColl
'            't.MyThreadData.nowPos()
'        Next
'    End Sub
'    Sub chedkdone()
'        Static i As Integer = 0
'        i += 1
'        If i < Me.thColl.Count Then Exit Sub
'        'System.Threading.Thread.Sleep(1000)
'        '改名操作
'        Dim newName As String = savePathfilename.Replace(".working", "")
'        newName = newName.Substring(newName.LastIndexOf("\") + 1, newName.Length - newName.LastIndexOf("\") - 1)
'        My.Computer.FileSystem.RenameFile(savePathfilename, newName)
'        MsgBox("okok")
'        ' Debug.WriteLine("nnn")
'    End Sub
'    Sub Computer(ByVal maxSpeed As Integer)
'        'Dim speedSum As Long
'        'For Each myDT As MyDownThread In Me.thColl
'        '    Debug.WriteLine(" now:" & myDT.retInfo.nowPos.ToString)
'        '    speedSum += myDT.retInfo.speed
'        'Next
'        'Debug.WriteLine("speedSum:" & speedSum & "")

'        For Each myDT As MyDownThread In Me.thColl
'            ' If myDT.retInfo.speed > maxSpeed Then
'            If myDT.MyThreadData.speed > maxSpeed Then
'                myDT.speedlimit = True
'            Else
'                myDT.speedlimit = False
'            End If

'            'myDT.retInfo.nowPos()
'        Next
'    End Sub
'    Sub thStop(ByVal sender As Object, ByVal saveData As MyThreadStru)
'        '  For Each myDT As MyDownThread In Me.thColl
'        'If myDT.Equals(sender) Then
'        '    CType(sender, MyDownThread).pause = True
'        'End If
'        'Next
'        Dim dt As MyDownThread = CType(sender, MyDownThread)
'        For Each myDT As MyDownThread In Me.thColl
'            If myDT.Equals(dt) Then
'                '                Debug.WriteLine("nowpos:" & dt.retInfo.nowPos.ToString)
'                'myDT.MyThreadData.e()
'            End If
'        Next

'        Debug.WriteLine("nowpos:" & dt.MyThreadData.nowPos.ToString)
'        Static i As Integer
'        i += 1
'        If i = Me.thColl.Count Then
'            Debug.WriteLine("stop ok")
'        End If
'    End Sub
'    Sub StartTask()
'        LoadThData()
'        For Each t As MyDownThread In Me.thColl
'            t.startdown()
'        Next
'        Me.myTimer.Enabled = True
'        Me.myTimer.Interval = 1000
'    End Sub
'    Sub LoadThData()
'        Using conn As New Data.OleDb.OleDbConnection(connStr)
'            Dim com As New Data.OleDb.OleDbCommand("", conn)
'            com.Parameters.AddWithValue("@Filename", savePathfilename)
'            com.CommandText = "SELECT * FROM 下载数据 WHERE Filename=@Filename"
'            conn.Open()
'            Dim dr As OleDb.OleDbDataReader = com.ExecuteReader
'            Dim nt As MyThreadStru
'            If dr.HasRows = False Then
'                'error
'                Exit Sub
'            End If
'            Dim ss As String = String.Empty
'            While dr.Read()
'                nt.filename = dr.Item("Filename").ToString()
'                nt.url = dr.Item("URL").ToString
'                ss = dr.Item("Thread").ToString & dr.Item("Thread2").ToString
'            End While
'            Dim mmm As RegularExpressions.MatchCollection = RegularExpressions.Regex.Matches(ss, "#\d+:\d+:\d+")
'            For Each mm As System.Text.RegularExpressions.Match In mmm
'                Dim mc As RegularExpressions.MatchCollection = RegularExpressions.Regex.Matches(mm.ToString, "(?<s>\d+):(?<n>\d+):(?<e>\d+)")
'                For Each m As System.Text.RegularExpressions.Match In mc
'                    nt.filename = savePathfilename
'                    nt.url = downUrl
'                    nt.startPos = CLng(m.Groups("s").ToString)
'                    nt.nowPos = CLng(m.Groups("n").ToString)
'                    nt.endPos = CLng(m.Groups("e").ToString)
'                    Dim downFile As New MyDownThread(nt)
'                    'AddHandler downFile.thDone, AddressOf Me.chedkdone
'                    AddHandler downFile.thStop, AddressOf Me.thStop
'                    Me.thColl.Add(downFile)
'                Next
'            Next
'            com.Dispose()
'        End Using
'    End Sub
'    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
'        For Each myDT As MyDownThread In Me.thColl
'            myDT.speedlimit = True
'            myDT.starttest = True
'        Next
'    End Sub
'    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
'        For Each myDT As MyDownThread In Me.thColl
'            myDT.stopDown()
'        Next

'    End Sub
'End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -