Arrêter un backgroundworker
Bonjour, j'ai un backgroundworker qui upload des fichiers (images/mp3/exe) sur un ftp et je voudrais faire un bouton "Cancel upload" mais le problème est que j'ai testé de mettre ça dans le backgroundworker :
Code:
1 2 3 4 5 6
| BackgroundWorker1.WorkerSupportsCancellation = True
If BackgroundWorker1.CancellationPending Then
e.Cancel = True
HuraProgressBar1.Value = 0
Label3.text = "0%"
End If |
Et ça dans le bouton "Cancel upload" :
Code:
1 2 3 4 5 6
| If BackgroundWorker1.IsBusy Then
If BackgroundWorker1.WorkerSupportsCancellation Then
BackgroundWorker1.CancelAsync()
End If
End If |
Mais ça ne marche pas donc je me suis demandé si on pouvait cancel un webrequest en plein milieu et je ne sais pas comment m'y prendre, voila mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Dim request As FtpWebRequest = DirectCast(WebRequest.Create(New Uri(fichftp & filename)), FtpWebRequest)
request.Method = WebRequestMethods.Ftp.UploadFile
request.Credentials = New NetworkCredential(user, pass)
request.UseBinary = True
request.UsePassive = False
Dim fileStream() As Byte = System.IO.File.ReadAllBytes(fichlocal)
Dim requestStream As System.IO.Stream = request.GetRequestStream()
For offset As Int64 = 0 To fileStream.Length Step 1024
BackgroundWorker1.ReportProgress(CType(offset * HuraProgressBar1.Maximum / fileStream.Length, Integer))
Dim chSize As Int64 = fileStream.Length - offset
If chSize > 1024 Then chSize = 1024
requestStream.Write(fileStream, offset, chSize)
Next
requestStream.Close()
requestStream.Dispose()
Label3.Text = "0%" |
Je ne suis pas là pour prendre votre solution en copier-coller et partir mais pour comprendre d'où le problème du "BackgroundWorker1.CancelAsync()" vient et/ou si on pouvait cancel directement la requête.
Merci d'avance.