【发布时间】:2015-11-04 21:43:39
【问题描述】:
我目前正在研究可以同时发送大量文件的 FTP 类型的程序,我设法找到了一些适用于它的旧代码,我对其进行了很多修改。无论如何,我还在学习,我试图让进度条工作,但我做不到,我的代码有什么问题:
Private Sub BackgroundWorker1_DoWork(sender As Object, e As ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim hInet As Int32 = InternetOpen("nn:", 1, vbNullString, vbNullString, 0)
Dim hFtpSession As IntPtr = InternetConnect(hInet, "IPADDRESS", 21, "USERNAME", "PASSWORD", 1, 0, 0)
For Each f As String In IO.Directory.GetFiles(FlatTextBox1.Text + "Files\")
Dim fi As New IO.FileInfo(f)
FtpPutFile(hFtpSession, f, fi.Name, 0, 0)
Next
Dim fileStream() As Byte = System.IO.File.ReadAllBytes(FlatTextBox1.Text + "Files\")
Dim requestStream As System.IO.Stream = hInet.GetRequestStream() ' Here is my first issue.
For offset As Integer = 0 To fileStream.Length Step 1024
BackgroundWorker1.ReportProgress(CType(offset * ProgressBar1.Maximum / fileStream.Length, Integer))
Dim chSize As Integer = fileStream.Length - offset
If chSize > 1024 Then chSize = 1024
requestStream.Write(fileStream, offset, chSize)
Next
InternetCloseHandle(hInet)
FlatAlertBox1.Visible = True
End Sub
Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub
【问题讨论】:
-
Questions seeking debugging help ("why isn't this code working?") must include the desired behavior, a specific problem or error...但我做不到不太明白 -
@Plutonix 嘿,对不起,我忘了提,但是当我调试代码并上传文件时,它不会影响进度条值。
-
您是否将
WorkerReportsProgress设置为true? -
@Plutonix 是的,我试过了,但它没有改变任何东西跨度>
-
您的进度从 0..1 而不是 0..100。乘以 100。