diff --git a/src/Avalonia.Controls/ProgressBar.cs b/src/Avalonia.Controls/ProgressBar.cs index ea75e7acda..0ff3a78c1f 100644 --- a/src/Avalonia.Controls/ProgressBar.cs +++ b/src/Avalonia.Controls/ProgressBar.cs @@ -112,7 +112,8 @@ namespace Avalonia.Controls private void UpdateIsIndeterminate(bool isIndeterminate) { if (isIndeterminate) - _indeterminateAnimation = IndeterminateAnimation.StartAnimation(this); + if (_indeterminateAnimation == null || _indeterminateAnimation.Disposed) + _indeterminateAnimation = IndeterminateAnimation.StartAnimation(this); else _indeterminateAnimation?.Dispose(); } @@ -127,6 +128,9 @@ namespace Avalonia.Controls private WeakReference _progressBar; private IDisposable _indeterminateBindSubscription; private TimeSpan _startTime; + private bool _disposed; + + public bool Disposed => _disposed; private IndeterminateAnimation(ProgressBar progressBar) { @@ -171,6 +175,7 @@ namespace Avalonia.Controls public void Dispose() { _indeterminateBindSubscription?.Dispose(); + _disposed = true; } } }