public void UnregisterOperation(IReadOnlyOperationStatus operation)
 {
     if (_registeredOperations.ContainsKey(operation))
     {
         _registeredOperations[operation].Dispose();
         _registeredOperations.Remove(operation);
     }
 }
        public void RegisterOperation(IReadOnlyOperationStatus operation)
        {
            var subscriptions = new CompositeDisposable();

            operation.IsActive.Subscribe(isActive =>
            {
                if (isActive)
                {
                    _latestActiveOperation.Value = operation;
                }
            }).AddTo(subscriptions);

            operation.Progress.Subscribe(_ =>
            {
                UpdateProgress();
            }).AddTo(subscriptions);

            operation.Weight.Subscribe(_ =>
            {
                UpdateProgress();
            }).AddTo(subscriptions);

            _registeredOperations.Add(operation, subscriptions);
        }