/// <summary> /// Entry point of connection thread /// </summary> private async Task ConnectThreadRunAsync(PairedFoxDTO foxToConnect) { Exception lastException = null; using (IProgressDialog progress = UserDialogs.Instance.Progress("Connecting...", null, null, true, MaskType.Clear)) { for (var attempt = 0; attempt < ConnectionAttemptsCount; attempt++) { progress.PercentComplete = (int)Math.Round(100 * attempt / (double)ConnectionAttemptsCount); try { await _bluetoothCommunicator.ConnectAsync(foxToConnect); // We survived till here, so connection is estabilished lastException = null; break; } catch (Exception ex) { lastException = ex; } } } if (lastException != null) { _onConnectionFailed(lastException); await _userNotifier.ShowErrorMessageAsync("Failed to connect!", $"Reason: { lastException.Message }"); } }