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 :
Et ça dans le bouton "Cancel upload" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 BackgroundWorker1.WorkerSupportsCancellation = True If BackgroundWorker1.CancellationPending Then e.Cancel = True HuraProgressBar1.Value = 0 Label3.text = "0%" 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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 If BackgroundWorker1.IsBusy Then If BackgroundWorker1.WorkerSupportsCancellation Then BackgroundWorker1.CancelAsync() End If End If
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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%"
Merci d'avance.
Partager