aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Progress/ActionableProgress.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-07-01 12:24:26 -0400
committerGitHub <noreply@github.com>2017-07-01 12:24:26 -0400
commitff3713153ad2317e1c196f33ac2cba61b449a00e (patch)
tree84d2e6ed5bcb556a2395603b6403c8e992535e6b /MediaBrowser.Common/Progress/ActionableProgress.cs
parentfad71a6c7d12c8b207cdf473c7dd7daafa53c174 (diff)
parent2dcad6b5977f5c5be81b18c42506ed8ad3fb73b6 (diff)
Merge pull request #2739 from MediaBrowser/beta
Beta
Diffstat (limited to 'MediaBrowser.Common/Progress/ActionableProgress.cs')
-rw-r--r--MediaBrowser.Common/Progress/ActionableProgress.cs46
1 files changed, 28 insertions, 18 deletions
diff --git a/MediaBrowser.Common/Progress/ActionableProgress.cs b/MediaBrowser.Common/Progress/ActionableProgress.cs
index 39f46ce05..503f3f407 100644
--- a/MediaBrowser.Common/Progress/ActionableProgress.cs
+++ b/MediaBrowser.Common/Progress/ActionableProgress.cs
@@ -7,12 +7,13 @@ namespace MediaBrowser.Common.Progress
/// Class ActionableProgress
/// </summary>
/// <typeparam name="T"></typeparam>
- public class ActionableProgress<T> : Progress<T>, IDisposable
+ public class ActionableProgress<T> : IProgress<T>, IDisposable
{
/// <summary>
/// The _actions
/// </summary>
private readonly List<Action<T>> _actions = new List<Action<T>>();
+ public event EventHandler<T> ProgressChanged;
/// <summary>
/// Registers the action.
@@ -21,22 +22,6 @@ namespace MediaBrowser.Common.Progress
public void RegisterAction(Action<T> action)
{
_actions.Add(action);
-
- ProgressChanged -= ActionableProgress_ProgressChanged;
- ProgressChanged += ActionableProgress_ProgressChanged;
- }
-
- /// <summary>
- /// Actionables the progress_ progress changed.
- /// </summary>
- /// <param name="sender">The sender.</param>
- /// <param name="e">The e.</param>
- void ActionableProgress_ProgressChanged(object sender, T e)
- {
- foreach (var action in _actions)
- {
- action(e);
- }
}
/// <summary>
@@ -55,9 +40,34 @@ namespace MediaBrowser.Common.Progress
{
if (disposing)
{
- ProgressChanged -= ActionableProgress_ProgressChanged;
_actions.Clear();
}
}
+
+ public void Report(T value)
+ {
+ if (ProgressChanged != null)
+ {
+ ProgressChanged(this, value);
+ }
+
+ foreach (var action in _actions)
+ {
+ action(value);
+ }
+ }
+ }
+
+ public class SimpleProgress<T> : IProgress<T>
+ {
+ public event EventHandler<T> ProgressChanged;
+
+ public void Report(T value)
+ {
+ if (ProgressChanged != null)
+ {
+ ProgressChanged(this, value);
+ }
+ }
}
}