public async void Connect() { try { Task[] connectTask = new Task[2]; StatusString = string.Empty; IProgress <int> progress = UpdateProgress(); if (SelectedEarType == Ear.Both) { connectTask[0] = Task.Run(() => { StatusString = $"Connecting Left Processor.."; IsLeftConnected = _fittingFramework.Connect(Ear.Left); StatusString = $"Connecting Right Processor.."; IsRightConnected = _fittingFramework.Connect(Ear.Right); }); connectTask[1] = InvokeProgressTask(progress, cancellationToken.Token, 100); } else { connectTask[0] = Task.Run(() => { StatusString = $"Connecting {SelectedEarType.ToString()} Processor.."; if (SelectedEarType == Ear.Left) { IsLeftConnected = _fittingFramework.Connect(SelectedEarType); } else { IsRightConnected = _fittingFramework.Connect(SelectedEarType); } }); connectTask[1] = InvokeProgressTask(progress, cancellationToken.Token, 50); } await Task.WhenAll(connectTask).ContinueWith(t => DisConnectCommand.RaiseCanExecuteChanged(), TaskContinuationOptions.OnlyOnRanToCompletion); ReadMDACommand.RaiseCanExecuteChanged(); } catch (Exception ex) { cancellationToken.Cancel(); MessageBox.Show($"Connection Failed \n {ex.Message}"); } }
private async void DisConnect() { Task[] disConnectTask = new Task[2]; IProgress <int> progress = UpdateProgress(); StatusString = string.Empty; if (SelectedEarType == Ear.Both) { disConnectTask[0] = Task.Run(() => { StatusString = $"Disconnecting Left Processor.."; IsLeftConnected = _fittingFramework.DisConnect(Ear.Left); StatusString = $"Disconnecting Right Processor.."; IsRightConnected = _fittingFramework.DisConnect(Ear.Right); }); disConnectTask[1] = InvokeProgressTask(progress, cancellationToken.Token, 50); } else { disConnectTask[0] = Task.Run(() => { StatusString = $"Disconnecting {SelectedEarType.ToString()} Processor.."; if (SelectedEarType == Ear.Left) { IsLeftConnected = _fittingFramework.DisConnect(SelectedEarType); } else { IsRightConnected = _fittingFramework.DisConnect(SelectedEarType); } }); disConnectTask[1] = InvokeProgressTask(progress, cancellationToken.Token, 25); } await Task.WhenAll(disConnectTask).ContinueWith(t => DisConnectCommand.RaiseCanExecuteChanged(), TaskContinuationOptions.OnlyOnRanToCompletion); ReadMDACommand.RaiseCanExecuteChanged(); }