Hallo, ich habe ein kleines Problem mit einer API Abfrage. Ich möchte für einen Fahrzeugvorschlag für eine Adresse, die Fahrzeuge vorgeschlagen bekommen, welche am nächsten zur Adresse sind. Das funktioniert soweit auch gut! Allerdings lädt die Abfrage bei 10 Abfragen allerdings 5 Sekunden und dabei hängt es sich auch auf. Das dauert mir allerdings zu lange? Kann ich an meinen Code irgendwas anpassen, damit das für viele Fahrzeuge schnell abgefragt wird?
VB.NET-Quellcode
- Private Sub fahrzeugVorschlagBtn_Click(sender As Object, e As EventArgs) Handles fahrzeugVorschlagBtn.Click
- Dim fileInhalt As New TextBox
- fileInhalt.Text = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Fahrzeuge\RTW.txt").ToString
- Dim linint As Integer = 0
- Dim myReq As HttpWebRequest
- For Each line As String In fileInhalt.Lines
- Dim splitter() = line.Split("§")
- Dim name As String = splitter(0)
- myReq = DirectCast(WebRequest.Create("http://www.mapquestapi.com/directions/v2/route?key=KEY&from=" + splitter(1).Replace("|", "+") + "&to=" + TextBox1.Text + "&outFormat=xml&ambiguities=ignore&routeType=shortest&doReverseGeocode=false&enhancedNarrative=false&avoidTimedConditions=false"), HttpWebRequest)
- Dim webResponse As HttpWebResponse = Nothing
- Try
- webResponse = TryCast(myReq.GetResponse(), HttpWebResponse)
- If webResponse IsNot Nothing Then
- If webResponse.StatusCode = HttpStatusCode.OK Then
- Dim doc As New System.Xml.XmlDocument()
- doc.Load(webResponse.GetResponseStream())
- If doc IsNot Nothing Then
- Dim geometry As System.Xml.XmlNode = doc.SelectSingleNode("response/route")
- If geometry IsNot Nothing Then
- Try
- With DataGridView1
- .Rows.Add(geometry.SelectSingleNode("distance").InnerXml)
- .Rows(linint).Cells(1).Value = splitter(0)
- End With
- Catch ex As Exception
- End Try
- Else
- MessageBox.Show("Nein")
- End If
- End If
- End If
- End If
- Catch ex As Exception
- End Try
- linint += 1
- Next
- DataGridView1.Sort(DataGridView1.Columns(0), System.ComponentModel.ListSortDirection.Ascending)
- MessageBox.Show(DataGridView1(1, 0).Value.ToString)
- End Sub