private async void button1_Click(object sender, EventArgs e) { if (MessageBox.Show("Are You Sure to Proceed ?", "Confirmation Dialog", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { if (checkInput(tbTitle.Text) && totalRequest < 2400) { groupBox1.Enabled = false; richTextBox1.Clear(); matrix_data.Clear(); progressBar1.Value = 0; progressBar1.Maximum = totalRequest; String title = tbTitle.Text; String mode = cbMode.SelectedItem.ToString(); String apiKey = cbKey.SelectedItem.ToString(); try { int request = 0; int originOffset = 0; int destOffset = 0; int MAXIMUM_COUNTER = place_data.Count; int MAXIMUM_DEST = (int)numericMaxGrab.Value; while (originOffset < MAXIMUM_COUNTER) { while (destOffset < MAXIMUM_COUNTER) { int DEST_COUNTER = (destOffset + MAXIMUM_DEST > MAXIMUM_COUNTER) ? MAXIMUM_COUNTER : (destOffset + MAXIMUM_DEST); List <String> origin = new List <String>(); origin.Add(place_data[originOffset].placeid); List <String> destinations = new List <String>(); for (int i = destOffset; i < DEST_COUNTER; i++) { if (i != originOffset) { destinations.Add(place_data[i].placeid); } } String query = DistanceMatrix.getDistanceMatrixQuery(apiKey, origin, destinations, mode); //richTextBox1.AppendText(query + "\n"); //START JSON PARSING String distanceMatrixResult = await doTaskAsync(query); JObject distanceMatrixJSON = JObject.Parse(distanceMatrixResult); String distanceMatrixStatus = (String)distanceMatrixJSON["status"]; if (distanceMatrixStatus == "OK") { JArray distanceMatrixArray = (JArray)distanceMatrixJSON["rows"][0]["elements"]; int idx = 0; foreach (var item in distanceMatrixArray) { String status = (String)item["status"]; String curOrigin = place_data[originOffset].placeid; String curDest = destinations[idx].Split(':')[1]; if (status == "OK") { int distance, traveltime, fare; String currency; if (item["distance"] != null) { distance = (int)item["distance"]["value"]; } else { distance = -1; } if (item["duration"] != null) { traveltime = (int)item["duration"]["value"]; } else { traveltime = -1; } if (item["fare"] != null) { fare = (int)item["fare"]["value"]; currency = (String)item["fare"]["currency"]; } else { fare = -1; currency = "NONE"; } MatrixData data = new MatrixData(curOrigin, curDest, distance, traveltime, currency, fare); matrix_data.Add(data); } else { MatrixData data = new MatrixData(curOrigin, curDest); matrix_data.Add(data); } idx++; } } else { break; } richTextBox1.AppendText("Request-" + (request + 1).ToString() + " Success... \n"); richTextBox1.ScrollToCaret(); destOffset = DEST_COUNTER; request++; progressBar1.Value++; } destOffset = 0; originOffset++; } savetoLog(title); exportCSV("Matrix/City/" + getDateTimeDirectory() + "_" + title + ".csv", matrix_data); richTextBox1.AppendText("Done...\n"); System.Media.SoundPlayer player = new System.Media.SoundPlayer("alert.wav"); player.Play(); } catch (Exception) { if (checkConnection()) { richTextBox1.AppendText("INVALID REQUEST...\n"); } else { richTextBox1.AppendText("No Connection...\n"); } } } else { MessageBox.Show("Invalid Input!!"); } } groupBox1.Enabled = true; tbTitle.Text = ""; }