CalculateDistance

We can use CalculateDistance to get distance for two points.

        private void btnCalculateDistance_Click(object sender, EventArgs e)
        {
            btnCalculateDistance.Enabled = false;
            try
            {
                distanceRequest = new TestInternal.ts.DistanceSpecification();
                distanceRequest.DistanceUnit = TestInternal.ts.DistanceUnit.Mile;
                //distanceRequest..IsNeedMatchCode = true;
                
                distanceRequest.StartLocation = new ts.Location();
                distanceRequest.StartLocation.Name = "Stop A";
                distanceRequest.StartLocation.Address = new ts.Address();
                distanceRequest.StartLocation.Address.Street = "6718 Whittier Avenue";
                distanceRequest.StartLocation.Address.City = "McLean";
                distanceRequest.StartLocation.Address.State = "VA";
                distanceRequest.StartLocation.Address.PostalCode = "22101";

                distanceRequest.FinishLocation = new ts.Location();
                distanceRequest.FinishLocation.Name = "Stop B";
                distanceRequest.FinishLocation.Address = new ts.Address();
                distanceRequest.FinishLocation.Address.Street = "1450 Old Chaing Bridge Road";
                distanceRequest.StartLocation.Address.City = "McLean";
                distanceRequest.StartLocation.Address.State = "VA";
                distanceRequest.StartLocation.Address.PostalCode = "22101";
              
                try
                {
                    client.Timeout = 1000 * 60 * 5;// 5 minute
                    DateTime dt = DateTime.Now;
                    TestInternal.ts.DistanceResult result = client.CalculateDistance(distanceRequest);
                    TimeSpan tsp = DateTime.Now.Subtract(dt);
                    if (result.Status == TestInternal.ts.OperationStatus.Success)
                    {
                        StringBuilder sb = new StringBuilder();
                        sb.AppendFormat("Total Time:{0}\r\n\r\n", tsp);
                        sb.AppendFormat("{0}\t {1} \r\n", result.StartLocationMatchCode, result.FinishLocationMatchCode);
                        sb.AppendFormat("{0}\t {1:f2}, [{2}]\r\n", result.Status, result.Distance, result.Time);
                        txtResult.Text = sb.ToString();
                        return;
                    }
                    else//(result.Status == WebRef.ts.OperationStatus.SuccessWithErrors) 
                    {
                        StringBuilder sb = new StringBuilder();
                        sb.AppendFormat("Total Time:{0}\r\n\r\n", tsp);
                        sb.AppendFormat("Status:{0}\r\n", result.Status);
                        foreach (TestInternal.ts.Error i in result.Errors)
                        {
                            sb.AppendFormat("{0}\r\n", i.Message);
                        }
                        txtResult.Text = sb.ToString();
                        //Show result with error. Some of locations can be skipped or some errors may happen.
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
            finally
            {
                btnCalculateDistance.Enabled = true;
            }
        }