none
Download Abbrechen RRS feed

  • Frage

  • Hallo,

    Ich bekomme es einfach nicht hin den Download Abzubrechen. Kann mir da jemand helfen ??

    Private Sub StartRBdown()
            Try
    
                Dim client As WebClient = New WebClient
                AddHandler client.DownloadProgressChanged, AddressOf client_ProgressChanged
                Dim speicherpfad1 As String = My.Computer.FileSystem.SpecialDirectories.Temp
                AddHandler client.DownloadFileCompleted, AddressOf client_DownloadCompleted
                Dim speicherpfad2 As String = My.Settings.rbdownname
                Dim speicherpfad3 As New TextBox
                If My.Computer.FileSystem.DirectoryExists(speicherpfad1 & "\MinecraftServerConfigurator\") = False Then
                    My.Computer.FileSystem.CreateDirectory(speicherpfad1 & "\MinecraftServerConfigurator\")
    
                    speicherpfad3.Text = speicherpfad1 & "\MinecraftServerConfigurator\" & speicherpfad2
                    If My.Computer.FileSystem.FileExists(speicherpfad3.Text) = True Then
                        Dim löschfrage1 As MsgBoxResult = MsgBox("Es sieht so aus, als währe die Datei schon vorhanden. Möchten Sie die Datei überschreiben ?", MsgBoxStyle.YesNo, "Doppelte Datei")
                        If (löschfrage1 = MsgBoxResult.Yes) Then
                            My.Computer.FileSystem.DeleteFile(speicherpfad3.Text, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.DeletePermanently)
    
                            client.DownloadFileAsync(New Uri(My.Settings.rb), speicherpfad3.Text)
                            Label15.Text = "Download in Progress"
                            My.Settings.downloadclose = "no"
                            My.Settings.Save()
                            Label15.Enabled = False
                        ElseIf (löschfrage1 = MsgBoxResult.No) Then
                            MsgBox("Download durch den Benutzer abgebrochen", MsgBoxStyle.Information, "Ende")
                            Close()
    
                        End If
                    Else
                        client.DownloadFileAsync(New Uri(My.Settings.rb), speicherpfad3.Text)
                        Label15.Text = "Download in Progress"
                        My.Settings.downloadclose = "no"
                        My.Settings.Save()
                        Label15.Enabled = False
                    End If
    
                Else
    
                    speicherpfad3.Text = speicherpfad1 & "\MinecraftServerConfigurator\" & speicherpfad2
                    If My.Computer.FileSystem.FileExists(speicherpfad3.Text) = True Then
                        Dim löschfrage1 As MsgBoxResult = MsgBox("Es sieht so aus, als währe die Datei schon vorhanden. Möchten Sie die Datei überschreiben ?", MsgBoxStyle.YesNo, "Doppelte Datei")
                        If (löschfrage1 = MsgBoxResult.Yes) Then
                            My.Computer.FileSystem.DeleteFile(speicherpfad3.Text, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.DeletePermanently)
    
                            client.DownloadFileAsync(New Uri(My.Settings.rb), speicherpfad3.Text)
                            Label15.Text = "Download in Progress"
                            My.Settings.downloadclose = "no"
                            My.Settings.Save()
                            Label15.Enabled = False
                        ElseIf (löschfrage1 = MsgBoxResult.No) Then
                            MsgBox("Download durch den Benutzer abgebrochen", MsgBoxStyle.Information, "Ende")
                            Close()
                        End If
                    Else
                        client.DownloadFileAsync(New Uri(My.Settings.rb), speicherpfad3.Text)
                        Label15.Text = "Download in Progress"
                        My.Settings.downloadclose = "no"
                        My.Settings.Save()
                        Label15.Enabled = False
                    End If
                End If
    
        
    
    
    
            Catch ex As Exception
                MsgBox(Err.Description)
            End Try

    Samstag, 14. September 2013 15:36

Antworten

Alle Antworten

  • Hi,

    um den Download abzubrechen, musst du <WebClient>.CancelAsync() aufrufen. Beachte aber auch die Hinweise im MSDN Artikel:

      http://msdn.microsoft.com/de-de/library/system.net.webclient.cancelasync.aspx

    Ein Beispiel (auch in C#^^) findest Du hier:

      http://stackoverflow.com/questions/10332506/aborting-a-webclient-downloadfileasync-operation


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Samstag, 14. September 2013 16:00
    Moderator
  • Der sagt mir immer das diese Datei gerade benutzt wird und nicht gelöscht werden kann.

    Die Datei wird aber nur Heruntergeladen dass heißt der Download schritt macht den Fehler und ich kann nicht abbrechen aber wie bekomme ich den jetzt aus habe es mit Cancel Async versucht geht aber net

    Samstag, 14. September 2013 16:20
  • Hallo,
    ich habe es mal schnell in einer VB.NET-Konsole getestet und hatte keine Probleme beim abbrechen eines Downloads:
        Sub Main()
            Using wc As New WebClient()
                wc.DownloadFileAsync(New Uri("http://download.microsoft.com/download/7/D/E/7DE05DF5-57AF-4B20-B74F-A5819F34D971/VJS.iso"), "C:\test\vjs.iso")
                Thread.Sleep(5000) '5s
                wc.CancelAsync()
                'Warten bis Download abgebrochen ist
                While wc.IsBusy : Thread.Sleep(50) : End While
            End Using
            File.Delete("C:\test\vjs.iso")
        End Sub
    Bevor man die Datei löschen kann, muss der Download aber wirklich abgebrochen sein. Das regel ich mit der While-Schleife. Die Thread.Sleep-Methode darin sorgt dafür, das die Schleife nicht sinnlose 1000mal ausgeführt wird wo auch 10ma reichen würden.

    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Samstag, 14. September 2013 19:03
    Moderator
  • Hi,

    mal ganz im Ernst: Auch wenn wir dir hier sicher gerne weiterhelfen, ein wenig selbst was tun musst Du schon.

    Da Du ja noch relativ am Anfang deiner Programmiererkarriere bist, dürften die 20 Minuten zwischen meinem und deinem Posting nicht mal ansatzweise reichen, um die Änderungen in deinen Code einzubauen, zu schauen, dass der Code an sich korrekt läuft, Breakpoints zu setzen und zu prüfen, wo nun wann welcher Fehler auftritt, ggfs. noch Korrekturen vornehmen, usw. Für mich sieht das eher nach "Code an irgendeiner Stelle reingeschmissen, läuft nicht, nochmal im Forum posten" aus. Das wäre allerdings sehr schade, da sich die Antwortenden hier sehr viel Mühe geben, dir zu helfen. Die einzige Gegenleistung, die wir "erwarten" (bzw. zumindest ich für meinen Teil) ist, dass Du dich auch mit dem, was man dir schreibt, beschäftigst und versuchst, es wirklich zu verstehen.

    Es wäre daher für alle Beteiligten sehr hilfreich, wenn Du nach einem Hinweis erstmal versuchst, das selbst einzubauen und zu testen. Du musst dich ja auch Stück für Stück weiterbilden, sonst bringt das hier alles nichts.

    Wenn es dann trotzdem nicht klappt, poste bitte - wie schon x-mal geschrieben - die genaue und vollständige Fehlermeldung und dazu den Code, der den Fehler auslöst.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 14. September 2013 20:49
    Moderator
  • Hallo Tobpy,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Wenn nicht, neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    Danke und viele Grüße,
    Ionut


    Ionut Duma, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 19. September 2013 18:26
    Moderator