void service_getRacksCompleted(object sender, ClearChannelService.getRacksCompletedEventArgs e) { var xmlDoc = XDocument.Parse("<racks>" + e.Result + "</racks>"); var racks = from item in xmlDoc.Descendants("station") select new Rack { Id = Convert.ToInt32(item.Value) }; var service = new ClearChannelService.ClearChannelSoapClient(); service.getRackCompleted += service_getRackCompleted; foreach (var rack in racks) { service.getRackAsync(rack.Id, rack); } }
void service_getRackCompleted(object sender, ClearChannelService.getRackCompletedEventArgs e) { try { var rack = (Rack)e.UserState; var xmlDoc = XDocument.Parse(e.Result.Replace("&", "&")); var node = xmlDoc.Element("station"); rack.Description = node.Element("description").Value; rack.Longitude = Convert.ToDouble(node.Element("longitute").Value); rack.Latitude = Convert.ToDouble(node.Element("latitude").Value); rack.Bikes = Convert.ToInt32(node.Element("ready_bikes").Value); rack.EmptyLocks = Convert.ToInt32(node.Element("empty_locks").Value); rack.Online = node.Element("online").Value == "1" ? true : false; Rack oldRack = Model.Racks.SingleOrDefault(r => r.Id == rack.Id); if (oldRack != null) Model.Racks.Remove(oldRack); Model.Racks.Add(rack); } catch { } }