private void UpdateNavaidsFiles() { Task.Factory.StartNew(() => { StopUpdatingNavaids(); NavaidsDataLoad = "Downloading"; NavaidsDataHelper.UpdateDataFiles(); LoadNavaidsDataTask(); StartUpdatingNavaids(); }); }
private void UpdateNavaids(CancellationToken ct) { while (true) { if (ct.IsCancellationRequested) { break; } lock (_navaidsDataLoadedLock) { if (!_navaidsDataLoaded) { Task.Delay(Constants.UpdateNavaidsDelay).GetAwaiter().GetResult(); continue; } } Location planePoint; lock (_planeLocationLock) { if (_planeLocation == null) { Task.Delay(Constants.UpdateNavaidsDelay).GetAwaiter().GetResult(); continue; } planePoint = new Location(_planeLocation); } List <Distance> navaidsDistanceList = null; lock (_navaidsDataLock) { double maxDistanceInM = SelectedDistanceKmValueList * 1000; navaidsDistanceList = NavaidsDataHelper.GetDistanceList(_navaidsData.Navaids, planePoint.Latitude, planePoint.Longitude, maxDistanceInM, NavaidSettingsToArray()); } _mapVM.RemovePushPins(); NavaidsText = ""; foreach (var navaidDistance in navaidsDistanceList) { Location loc = new Location(navaidDistance.Navaid.Latitude, navaidDistance.Navaid.Longitude); _mapVM.AddPushPin(loc, navaidDistance.Navaid.Id); NavaidsText += navaidDistance.Navaid.ToString(); NavaidsText += Environment.NewLine; } Task.Delay(Constants.UpdateNavaidsDelay).GetAwaiter().GetResult(); } }
private void LoadNavaidsDataTask() { Task.Factory.StartNew(() => { lock (_navaidsDataLoadedLock) { NavaidsDataLoad = "Loading"; _navaidsDataLoaded = false; } NavaidsData navaidsData = NavaidsDataHelper.LoadData(); lock (_navaidsDataLock) { _navaidsData = navaidsData; } lock (_navaidsDataLoadedLock) { NavaidsDataLoad = "Loaded"; _navaidsDataLoaded = true; } }); }