📄 class1.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 + -