| |
VB.NET - Ein- und UmsteigerWebrequest & GUI refresh (Threading?) | | | Autor: cipherwar | Datum: 29.03.11 10:22 |
| Hallo,
ich habe ein Problem mit dem Refresh der GUI. Mein Programm soll eine Anzahl von Webseiten aufrufen und die zurückgelieferten Responses in einer Datei speichern. Darüber hinaus soll der Benutzer in einer Textbox (tbLog) informiert werden, welche Website grade bearbeitet wird und er soll die Möglichkeit haben, mit einem "Abbruch"-Butten den ganzen Vorgang zu beenden, wenn er keine Lust mehr hat zu warten.
Wenn ich nun nach einen Button-Click in einer Schleife nach und nach alle Seiten abfrage kommt es dazu, dass dann zwar die Websites abgefragt werden und auch die Speicherung erfolgt, allerdings kann ich während der gesamten Zeit überhaupt keine Interaktion mit meiner GUI mehr vornehmen.
Das ist insofern dumm, als ich weder dem User in meiner textbox tbLog darüber informieren kann, welcher Request grade verarbeitet wurde, als ich auch nicht den "Abbruch"-Button drücken kann, um den Prozess zu stoppen , wenn es zu lange dauert.
Ich habe nun die Anweisung Me.Refresh() auf die GUI angesetzt, aber das bringt auch nichts. Dann habe ich was über Threading gelesen, aber sämtliche Beispiele die ich gefunden habe, erscheinen mir extrem komplex und für meine Zwecke überdimensioniert.
Hier sind die wesentlichen Schnipsel meines Quellcodes:
1) Anstoß der Funktionalität
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Me.tbLog.Clear()
Dim zaehler As Integer
Do Until (zaehler = 20)
Dim antwortseite As String
antwortseite = getResults( _
"http://localhost/antiquartwo/test-params.php", _
"field-keywords=ASP.NET 2.0")
' todo: verarbeiten der antwortseite
' anzeige der response in der GUI
Me.tbLog.Text &= antwortseite
zaehler = zaehler + 1
Loop
Me.Refresh()
End Sub 2) Die Funktion, die die Websites mit einem POST-Request anfordert:
Function getResults(ByVal portalURI As String, ByVal suchbegriff As String) _
As String
Dim uri As New Uri(portalURI)
'Dim data As String = "field-keywords=ASP.NET 2.0"
Dim data As String = suchbegriff
Dim request As HttpWebRequest = HttpWebRequest.Create(uri)
request.Method = WebRequestMethods.Http.Post
request.ContentLength = data.Length
request.ContentType = "application/x-www-form-urlencoded"
Dim writer As New StreamWriter(request.GetRequestStream)
writer.Write(data)
writer.Close()
Dim oResponse As HttpWebResponse = request.GetResponse()
Dim reader As New StreamReader(oResponse.GetResponseStream())
Dim tmp As String = reader.ReadToEnd()
oResponse.Close()
'Response.Write(tmp)
getResults = tmp
End Function Kann mir jemand einen Tipp geben bzw. den Codeschnipsel ergänzen?
Gruß,
cipherwar | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|