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 : 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
Et ça dans le bouton "Cancel upload" :
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
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
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.