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();
        }