Я пытался сделать это самостоятельно, но столкнулся с ситуацией, когда мне нужна помощь. Я хотел бы использовать элемент управления progressbar, чтобы показать текущий ход загрузки файла FTP.Как использовать индикатор выполнения с классом FtpWebRequest?
В настоящее время я вручную изменяю значение элемента управления progressbar - но я не мог не подумать, что есть, вероятно, лучший или более простой подход. Он работает прямо сейчас, но индикатор прогресса спорадичен в показе прогресса на основе выполняемой части кода. Кроме того, я попытался перебросить весь фрагмент в отдельный поток, но заметил, что когда я делал это, индикатор прогресса не отображается до конца кода - затем он кратковременно мигает и снова скрывается.
Вот что я сделал до сих пор, любая помощь будет оценен:
Public Sub uploadAuthorization()
ProgressBar1.Show()
Dim fileName As String = Path.GetFileName(TextBoxFilePath.Text)
Dim ftpFolder As String = "authorizations"
Try
'Create FTP Request
Me.Cursor = Cursors.WaitCursor
Dim myRequest As FtpWebRequest = DirectCast(WebRequest.Create(ftpServer + "/" + ftpFolder + "/" + fileName), FtpWebRequest)
ProgressBar1.Value = 20
'Update properties
myRequest.Credentials = New NetworkCredential(ftpUsername, ftpPassword)
myRequest.Method = WebRequestMethods.Ftp.UploadFile
ProgressBar1.Value = ProgressBar1.Value + 20
'Read the file
Dim myFile As Byte() = File.ReadAllBytes(TextBoxFilePath.Text)
ProgressBar1.Value = ProgressBar1.Value + 20
'Upload the file
Dim myStream As Stream = myRequest.GetRequestStream()
myStream.Write(myFile, 0, myFile.Length)
ProgressBar1.Value = ProgressBar1.Value + 20
'Cleanup
myStream.Close()
myStream.Dispose()
ProgressBar1.Value = ProgressBar1.Value + 20
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Information)
End Try
Me.Cursor = Cursors.Arrow
End Sub
Вы могли бы использовать вместо WebClient.UpLoadFileAsync, например, http://www.vbforums.com/showthread.php?649866-WebClient.UploadFileAsync. Вы можете добавить учетные данные: http://msdn.microsoft.com/en-us/library/system.net.webclient.credentials.aspx. –
Спасибо за предложение, я прочитаю его и дам вам знать, удастся ли мне его реализовать или нет. –