private async void LoadDeviceList(string deviceFile) { var list = new ObservableCollection <JLinkTargetDeviceViewModel>(); var versions = await PackageManager.ListToolchainPackages("JLink"); if (versions != null) { Versions = new List <string>(versions.Select(v => v.Version.ToString())); } if (File.Exists(deviceFile)) { using (TextReader tr = System.IO.File.OpenText(deviceFile)) { tr.ReadLine(); string line = null; while ((line = await tr.ReadLineAsync()) != null) { line = line.Replace("\"", string.Empty); line = line.Replace("{", string.Empty); line = line.Replace("}", string.Empty); var splits = line.Split(','); var newdev = new JLinkTargetDeviceViewModel(); newdev.Manufacturer = splits[0]; newdev.Device = splits[1].Trim(); newdev.Core = splits[2].Trim(); newdev.FlashStart = Convert.ToUInt32(splits[3].Trim(), 16); newdev.FlashLength = Convert.ToUInt32(splits[4].Trim(), 16); newdev.RamStart = Convert.ToUInt32(splits[5].Trim(), 16); newdev.RamLength = Convert.ToUInt32(splits[6].Trim(), 16); list.Add(newdev); } } unfilteredList = list; await FilterListAsync(); var selectedDevice = list.FirstOrDefault((d) => d.Device == settings.DeviceKey); await Dispatcher.UIThread.InvokeAsync(() => { SelectedDevice = selectedDevice; }); } hasLoaded = true; }