private AsyncCommand(ITaskRunner runner, ConditionAndDisposable conditionAndDisposable) : base(runner.Run, conditionAndDisposable.Condition) { this.CancelCommand = new ConditionRelayCommand(runner.Cancel, runner.CanCancelCondition); this.runner = runner; var completionSubscription = runner.ObservePropertyChangedSlim(nameof(runner.TaskCompletion)) .Subscribe(_ => this.OnPropertyChanged(nameof(this.Execution))); this.disposable = conditionAndDisposable.Disposable == null ? completionSubscription : new CompositeDisposable(2) { completionSubscription, conditionAndDisposable.Disposable }; }
private AsyncCommand(ITaskRunner <TParameter> runner) : this(runner, ConditionAndDisposable.Create(runner.CanRunCondition, null)) { }
private AsyncCommand(ITaskRunner <TParameter> runner, IReadOnlyList <ICondition> conditions) : this(runner, ConditionAndDisposable.Create(runner.CanRunCondition, conditions)) { }