ActionableProgress.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. namespace MediaBrowser.Common.Progress
  3. {
  4. /// <summary>
  5. /// Class ActionableProgress
  6. /// </summary>
  7. /// <typeparam name="T"></typeparam>
  8. public class ActionableProgress<T> : IProgress<T>
  9. {
  10. /// <summary>
  11. /// The _actions
  12. /// </summary>
  13. private Action<T> _action;
  14. public event EventHandler<T> ProgressChanged;
  15. /// <summary>
  16. /// Registers the action.
  17. /// </summary>
  18. /// <param name="action">The action.</param>
  19. public void RegisterAction(Action<T> action)
  20. {
  21. _action = action;
  22. }
  23. public void Report(T value)
  24. {
  25. if (ProgressChanged != null)
  26. {
  27. ProgressChanged(this, value);
  28. }
  29. var action = _action;
  30. if (action != null)
  31. {
  32. action(value);
  33. }
  34. }
  35. }
  36. public class SimpleProgress<T> : IProgress<T>
  37. {
  38. public event EventHandler<T> ProgressChanged;
  39. public void Report(T value)
  40. {
  41. if (ProgressChanged != null)
  42. {
  43. ProgressChanged(this, value);
  44. }
  45. }
  46. }
  47. }