vb.net多线程下载

Imports System.IO
Imports System.Net
Imports System.Threading

Public Class Form1
Private downloadThreads As List(Of Thread) = New List(Of Thread)()
Private downloadUrls As List(Of String) = New List(Of String)()

Private proxy As WebProxy = New WebProxy("http://proxy.example.com:8080")

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 添加需要下载的网址
downloadUrls.Add("http://example.com/file1.jpg")
downloadUrls.Add("http://example.com/file2.jpg")
downloadUrls.Add("http://example.com/file3.jpg")
downloadUrls.Add("http://example.com/file4.jpg")
downloadUrls.Add("http://example.com/file5.jpg")
End Sub

Private Sub btnDownload_Click(sender As Object, e As EventArgs) Handles btnDownload.Click
' 创建多个线程进行下载
For i As Integer = 0 To downloadUrls.Count - 1
Dim t As Thread = New Thread(New ParameterizedThreadStart(AddressOf DownloadFile))
downloadThreads.Add(t)
t.Start(downloadUrls(i))
Next
End Sub

Private Sub DownloadFile(url As Object)
Dim remoteUri As String = CStr(url)
Dim fileName As String = Path.GetFileName(remoteUri)

Dim myWebClient As WebClient = New WebClient()
myWebClient.Proxy = proxy
AddHandler myWebClient.DownloadFileCompleted, AddressOf DownloadFileCompleted
myWebClient.DownloadFileAsync(New Uri(remoteUri), fileName)
End Sub

Private Sub DownloadFileCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs)
If e.Error IsNot Nothing Then
' 下载失败
MessageBox.Show("下载失败:" & e.Error.Message)
Else
' 下载成功
MessageBox.Show("下载完成!")
End If
End Sub
End Class

Imports System.IO
Imports System.Net
Imports System.Threading

Public Class Form1
Private downloadThreads As List(Of Thread) = New List(Of Thread)()
Private downloadUrls As List(Of String) = New List(Of String)()

Private proxy As WebProxy = New WebProxy("http://proxy.example.com:8080")

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 添加需要下载的网址
downloadUrls.Add("http://example.com/file1.jpg")
downloadUrls.Add("http://example.com/file2.jpg")
downloadUrls.Add("http://example.com/file3.jpg")
downloadUrls.Add("http://example.com/file4.jpg")
downloadUrls.Add("http://example.com/file5.jpg")
End Sub

Private Sub btnDownload_Click(sender As Object, e As EventArgs) Handles btnDownload.Click
' 创建多个线程进行下载
For i As Integer = 0 To downloadUrls.Count - 1
Dim t As Thread = New Thread(New ParameterizedThreadStart(AddressOf DownloadFile))
downloadThreads.Add(t)
t.Start(downloadUrls(i))
Next
End Sub

Private Sub DownloadFile(url As Object)
Dim remoteUri As String = CStr(url)
Dim fileName As String = Path.GetFileName(remoteUri)

Dim myWebClient As WebClient = New WebClient()
myWebClient.Proxy = proxy
AddHandler myWebClient.DownloadFileCompleted, AddressOf DownloadFileCompleted
myWebClient.DownloadFileAsync(New Uri(remoteUri), fileName)
End Sub

Private Sub DownloadFileCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs)
If e.Error IsNot Nothing Then
' 下载失败
MessageBox.Show("下载失败:" & e.Error.Message)
Else
' 下载成功
MessageBox.Show("下载完成!")
End If
End Sub
End Class
 



[本日志由 admin 于 2023-06-22 01:23 PM 更新]
上一篇: Telegram机器人如何获取群组chat id?
下一篇: vb.net多线程下载
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: vb.net
相关日志:
评论: 0 | 引用: 0 | 查看次数: 344
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑