ActionableProgress.cs 876 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma warning disable CS1591
  2. #pragma warning disable CA1003
  3. using System;
  4. namespace MediaBrowser.Common.Progress
  5. {
  6. /// <summary>
  7. /// Class ActionableProgress.
  8. /// </summary>
  9. /// <typeparam name="T">The type for the action parameter.</typeparam>
  10. public class ActionableProgress<T> : IProgress<T>
  11. {
  12. /// <summary>
  13. /// The _actions.
  14. /// </summary>
  15. private Action<T>? _action;
  16. public event EventHandler<T>? ProgressChanged;
  17. /// <summary>
  18. /// Registers the action.
  19. /// </summary>
  20. /// <param name="action">The action.</param>
  21. public void RegisterAction(Action<T> action)
  22. {
  23. _action = action;
  24. }
  25. public void Report(T value)
  26. {
  27. ProgressChanged?.Invoke(this, value);
  28. _action?.Invoke(value);
  29. }
  30. }
  31. }