private async Task RefreshDeviceList() { if (ConnectionMethodPicker.SelectedItem == null) { ConnectMessage.Text = "Select a connection method to continue."; return; } DevicePicker.ItemsSource = null; ObservableCollection <string> result = null; switch (ConnectionMethodPicker.SelectedItem as string) { default: case "Bluetooth": DevicePicker.IsVisible = true; DevicesText.IsVisible = true; NetworkHostNameEntry.IsEnabled = false; NetworkPortEntry.IsEnabled = false; BaudRatePicker.IsEnabled = true; NetworkHostNameEntry.Text = ""; NetworkPortEntry.Text = ""; cancelTokenSource = new CancellationTokenSource(); cancelTokenSource.Token.Register(() => OnConnectionCancelled()); result = await arduino.GetDeviceList("Bluetooth", cancelTokenSource.Token); if (result.Count > 0) { DevicePicker.ItemsSource = result; } else { ConnectMessage.Text = "No items found."; DevicePicker.IsVisible = false; } break; case "USB": DevicePicker.IsVisible = true; DevicesText.IsVisible = true; NetworkHostNameEntry.IsEnabled = false; NetworkPortEntry.IsEnabled = false; BaudRatePicker.IsEnabled = true; NetworkHostNameEntry.Text = ""; NetworkPortEntry.Text = ""; cancelTokenSource = new CancellationTokenSource(); cancelTokenSource.Token.Register(() => OnConnectionCancelled()); result = await arduino.GetDeviceList("USB", cancelTokenSource.Token); if (result.Count > 0) { DevicePicker.ItemsSource = result; } else { ConnectMessage.Text = "No items found."; DevicePicker.IsVisible = false; } break; case "DfRobot": DevicePicker.IsVisible = true; DevicesText.IsVisible = true; NetworkHostNameEntry.IsEnabled = false; NetworkPortEntry.IsEnabled = false; BaudRatePicker.IsEnabled = true; NetworkHostNameEntry.Text = ""; NetworkPortEntry.Text = ""; cancelTokenSource = new CancellationTokenSource(); cancelTokenSource.Token.Register(() => OnConnectionCancelled()); result = await arduino.GetDeviceList("DfRobot", cancelTokenSource.Token); if (result.Count > 0) { DevicePicker.ItemsSource = result; } else { ConnectMessage.Text = "No items found."; DevicePicker.IsVisible = false; } break; case "Network": DevicePicker.IsVisible = false; DevicesText.IsVisible = false; NetworkHostNameEntry.IsEnabled = true; NetworkPortEntry.IsEnabled = true; BaudRatePicker.IsEnabled = false; ConnectMessage.Text = "Enter a host and port to connect."; break; } }