Problem mit Webbrowser

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von hm_krause.

    Problem mit Webbrowser

    Hallo,
    ich habe ein Problem mit einer kleinen Anwendung worin ein Webbrowser ist. Das Programm soll von einer Webseite eine Bestimmte Datei herunterladen und wenn das fertig ist wieder im Ursprungszustand schalten. Das ganze Funktioniert immer nur 3 mal hintereinander. Nach dem 3. Mal beendet der Webbrowser seine Funktion nicht mehr und das Programm bleibt in der "Ladephase"
    Ich habe mal auf die schnelle das Programmteil heraus kopiert um den es sich handelt.

    Ich hoffe es kann mir jemand sagen warum der Webbrowser nach dem 3 mal ausführen den ReadyState.Complete nicht erreicht.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Me.Text = "Daten werden gesendet. Bitte warten....."
    4. Button1.Enabled = False
    5. Me.Cursor = Cursors.WaitCursor
    6. WebBrowser1.Navigate(TextBox1.Text & TextBox3.Text & "&" & TextBox2.Text & "&" & TextBox4.Text & "&" & TextBox5.Text & "&" & "OUTPUT=kml")
    7. Application.DoEvents()
    8. Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    9. Application.DoEvents()
    10. Loop
    11. Me.Text = "Daten sind gesendet"
    12. Button1.Enabled = True
    13. Me.Cursor = Cursors.Arrow
    14. End Sub
    15. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hm_krause“ ()

    Zum Dateien herunterladen nimmt man auch kein Webbrowser sondern den WebClient, geht schneller weil keine Bilder und sonstiges geladen und nichst geparst werden muss.
    Ebenso benötigt man kein DoEvents() was extrem unsauber ist.
    Probier es mal so:

    VB.NET-Quellcode

    1. Dim downloader As New System.Net.WebClient
    2. downloader.DownloadFile("http://www.DeinServer.de/DeineeDatei", DeineDateiAufDemRechner)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Erst einmal Danke für die schnellen Antworten. Da muss ich dann etwas weiter ausholen. Also ich möchte auf einer Webseite eine Datei herunterladen lassen die durch die Webseite erstellt wird indem ich durch die Angabe die ich in den Textboxen 1 - Textbox5 mache erstellt wird und mir dann gesendet wird wo ich diese dann speichern oder ausführen kann. Es ist also nicht so das ich einfach jetzt auf diese Seite gehen kann und sage : Lade mir die Datei "Datei.kml" herunter. Die Datei.kml wird immer invidiuell erstellt.
    Da du die URL im Browser zusammen setzten kannst, kannst du dieses genauso beim Webclient machen

    VB.NET-Quellcode

    1. Dim downloader As New System.Net.WebClient
    2. downloader.DownloadFile(TextBox1.Text & TextBox3.Text & "&" & TextBox2.Text & "&" & TextBox4.Text & "&" & TextBox5.Text & "&" & "OUTPUT=kml", DeineDateiAufDemRechner)
    Vielen Dank. Das klappt soweit gut. Ich habe statt Webbrowser jetzt den Webclient genommen. Nun kommt eine 2. Sache allerdings dazu. Beim Webbrowser wurde ich gefragt ob ich die Datei speichern oder ausführen möchte. Ich möchte die Datei eigentlich nur ausführen. Habe das jetzt mal so gemacht das ich die Datei erst herunterlade (was allerdings überflüssig ist) und dann mit Process.Start(Datei) ausführe. Geht aber das speichern der Datei möchte ich nicht. Ich möchte nur die Datei direkt ausführen.Wie kann man das denn machen ?