aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities/Folder.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Entities/Folder.cs')
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs53
1 files changed, 26 insertions, 27 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index cf85cbb0d..039318f1d 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -563,50 +563,49 @@ namespace MediaBrowser.Controller.Entities
var children = ActualChildren.ToList();
var percentages = new Dictionary<Guid, double>(children.Count);
-
- var tasks = new List<Task>();
+ var numComplete = 0;
+ var count = children.Count;
foreach (var child in children)
{
- if (tasks.Count >= 2)
- {
- await Task.WhenAll(tasks).ConfigureAwait(false);
- tasks.Clear();
- }
-
cancellationToken.ThrowIfCancellationRequested();
- var innerProgress = new ActionableProgress<double>();
- // Avoid implicitly captured closure
- var currentChild = child;
- innerProgress.RegisterAction(p =>
+ if (child.IsFolder)
{
- lock (percentages)
+ var innerProgress = new ActionableProgress<double>();
+
+ // Avoid implicitly captured closure
+ var currentChild = child;
+ innerProgress.RegisterAction(p =>
{
- percentages[currentChild.Id] = p / 100;
+ lock (percentages)
+ {
+ percentages[currentChild.Id] = p / 100;
- var percent = percentages.Values.Sum();
- percent /= children.Count;
- percent *= 100;
- progress.Report(percent);
- }
- });
+ var innerPercent = percentages.Values.Sum();
+ innerPercent /= count;
+ innerPercent *= 100;
+ progress.Report(innerPercent);
+ }
+ });
- if (child.IsFolder)
- {
await RefreshChildMetadata(child, refreshOptions, recursive, innerProgress, cancellationToken)
.ConfigureAwait(false);
}
else
{
- // Avoid implicitly captured closure
- var taskChild = child;
-
- tasks.Add(Task.Run(async () => await RefreshChildMetadata(taskChild, refreshOptions, false, innerProgress, cancellationToken).ConfigureAwait(false), cancellationToken));
+ await RefreshChildMetadata(child, refreshOptions, false, new Progress<double>(), cancellationToken)
+ .ConfigureAwait(false);
}
+
+ numComplete++;
+ double percent = numComplete;
+ percent /= count;
+ percent *= 100;
+
+ progress.Report(percent);
}
- await Task.WhenAll(tasks).ConfigureAwait(false);
progress.Report(100);
}