WebClient Abbrechen nach x sekunden

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    WebClient Abbrechen nach x sekunden

    Hi,

    gibt es eine möglichkeit den webclient abzubrechen nach zb 20s ? Wenn die zu downlodende seite off oder zu lange braucht soll halt der webc abrechen und fehler ausgeben.

    VB.NET-Quellcode

    1. Try
    2. Dim wc As New WebClient
    3. wc.DownloadFile(New Uri("http://.de"), "datei.tmp")
    4. wc.Dispose()
    5. 'Code ....
    6. 'Ausgabe wenn OK
    7. Catch
    8. 'Ausgabe wenn fehler
    9. End Try
    Guck mal, vielleicht könntest du dir was hiermit basteln:

    VB.NET-Quellcode

    1. Public Class MyWebClient
    2. Inherits System.Net.WebClient
    3. Protected Overloads Overrides Function GetWebRequest(ByVal address As Uri) As WebRequest
    4. Dim req As WebRequest = DirectCast(MyBase.GetWebRequest(address), WebRequest)
    5. req.Timeout = 60000 'ms
    6. Return req
    7. End Function
    8. End Class

    Bin mir aber nicht sicher ob das funktioniert ;)
    /nicht getestet

    Gelöschter Benutzer schrieb:

    das ist unnötig, nutz einen httpwebrequest, der hat einen definierbaren timeout


    Also deine antwort hilft mir ja sehr viel weiter... auf dieser scheiß seite is im klar text nur das

    VB.NET-Quellcode

    1. Dim myReq As HttpWebRequest = _
    2. WebRequest.Create("http://www.contoso.com/")


    Und das is nix... Könntest wenn du hilfst wenigsten ein bs geben. Denn ich habe bis jetzt noch nie HttpWebRequest verwenden müssen.
    Lustige Lösung gefällig?

    VB.NET-Quellcode

    1. Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim path = "http://www.artfiles.org/knoppix/ADRIANE-KNOPPIX_V6.7.0CD-2011-08-01-DE.iso"
    3. Dim wc As New Net.WebClient With {.Proxy = Nothing}
    4. Dim result = wc.DownloadFileTaskAsync(path, "dummy")
    5. Dim waiter = (New TaskFactory).StartNew(Sub()
    6. System.Threading.Thread.Sleep(20000)
    7. End Sub)
    8. Dim t = Await Threading.Tasks.Task.WhenAny(New Task() {result, waiter})
    9. If t Is waiter Then
    10. Debug.Print("Cancelling Download")
    11. wc.CancelAsync()
    12. End If
    13. End Sub