hey im trying to make 2 webclients in same form so i can make more than 1 download i im trying but i dont know what im doing wrong here is my code:
if wi say there are 3 checkboxes i want i you select all 3 checkboxes there come 3 downloads if you select 2 checkboxes there come 2 downloads and i you select 1 there come 1 download and a progressbar
and setstatus enabled for all downloads
if wi say there are 3 checkboxes i want i you select all 3 checkboxes there come 3 downloads if you select 2 checkboxes there come 2 downloads and i you select 1 there come 1 download and a progressbar
and setstatus enabled for all downloads
VB.NET:
Imports System.Net
Imports System.IO
Imports System.Diagnostics
Public Class Form1
Private WithEvents WC2 As WebClient
Private WithEvents WC As WebClient
#Region "Download RateVariables"
Private ChangeInAmount As Integer
Private PreviousAmount As Integer
Private NextCheck As DateTime
#End Region
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
setstatus("0 kb", "0kb", "0%", "0kb/s")
WC = New WebClient
WC2 = New WebClient
End Sub
Private Sub setstatus(CurDownload As String, ByVal TotalDownload As String, ByVal Percentage As String, ByVal Rate As String)
Label1.Text = "Downloaded : " & CurDownload
Label2.Text = "Download Size : " & TotalDownload
Label3.Text = "Rate : " & Rate
Label4.Text = "Percentage : " & Percentage
End Sub
Public Function CalculateRate(ByVal Input As Integer) As String
Return Processbytes(Input) & "/s"
End Function
Public Function Processbytes(ByVal Input As Integer) As String
'Check if the file is 1GB or more
If Input >= 1073741824 Then
Return Math.Round(CDbl(Input / 1073741824), 2) & " GB"
Else
'Check for MB
If Input >= 1048576 Then
Return Math.Round(CDbl(Input / 1048576), 2) & " MB"
Else
'Can only be in KB
Return Math.Round(CDbl(Input / 1024), 2) & " KB"
End If
End If
End Function
Private Function CDb1(p1 As Double) As Double
Throw New NotImplementedException
End Function
Private Sub WC_DownloadFileCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs) Handles WC.DownloadFileCompleted
ProgressBar1.Value = 0
ProgressBar1.Maximum = 0
ChangeInAmount = 0
PreviousAmount = 0
NextCheck = Now.AddSeconds(1)
End Sub
Private Sub WC2_DownloadFileCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs) Handles WC.DownloadFileCompleted
ProgressBar1.Value = 0
ProgressBar1.Maximum = 0
ChangeInAmount = 0
PreviousAmount = 0
NextCheck = Now.AddSeconds(1)
End Sub
Private Sub WC_DownloadProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs) Handles WC.DownloadProgressChanged
Try
If Now > NextCheck Then
ChangeInAmount = e.BytesReceived - PreviousAmount
PreviousAmount = e.BytesReceived
NextCheck.AddSeconds(1)
End If
Dim Rate As String = CalculateRate(ChangeInAmount)
ProgressBar1.Maximum = e.TotalBytesToReceive
ProgressBar1.Value = e.BytesReceived
setstatus(Processbytes(e.BytesReceived), Processbytes(e.TotalBytesToReceive), e.ProgressPercentage, Rate)
Catch
End Try
End Sub
Private Sub WC2_DownloadProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs) Handles WC.DownloadProgressChanged
Try
If Now > NextCheck Then
ChangeInAmount = e.BytesReceived - PreviousAmount
PreviousAmount = e.BytesReceived
NextCheck.AddSeconds(1)
End If
Dim Rate As String = CalculateRate(ChangeInAmount)
ProgressBar1.Maximum = e.TotalBytesToReceive
ProgressBar1.Value = e.BytesReceived
setstatus(Processbytes(e.BytesReceived), Processbytes(e.TotalBytesToReceive), e.ProgressPercentage, Rate)
Catch
End Try
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
If CheckBox1.Checked = True Then
Dim webAddress As String = "https://dl.dropboxusercontent.com/u/185853590/download%20Manager/Update/Tool%20update.txt"
Dim SFD As New SaveFileDialog
If SFD.ShowDialog() = DialogResult.OK Then
WC.DownloadFileAsync(New Uri("https://dl.dropboxusercontent.com/u/185853590/download%20Manager/Update/Tool%20update.txt"), SFD.FileName)
End If
End If
If CheckBox2.Checked = True Then
Dim webAddress2 As String = "https://dl.dropboxusercontent.com/u/185853590/download%20Manager/Update/Tool%20update.txt"
Dim SFD As New SaveFileDialog
If SFD.ShowDialog() = DialogResult.OK Then
WC2.DownloadFileAsync(New Uri("https://dl.dropboxusercontent.com/u/185853590/download%20Manager/Update/Tool%20update.txt"), SFD.FileName)
End If
End If
End Sub
End Class
Last edited: