aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager/ProviderManager.cs
diff options
context:
space:
mode:
authorGary Wilber <Spacetech326@gmail.com>2020-12-02 18:51:53 -0800
committerGary Wilber <Spacetech326@gmail.com>2020-12-02 18:51:53 -0800
commitf4edca7c2790207b5be9abb3b49029c9fbe04828 (patch)
tree3da18152bbe5e1b168f58fb97a0bcdeea4a325b2 /MediaBrowser.Providers/Manager/ProviderManager.cs
parente8cb9cea7d04da5896cdb2ac1f71b764e8143faa (diff)
Move MetadataRefreshThrottler to BaseItemManager
Diffstat (limited to 'MediaBrowser.Providers/Manager/ProviderManager.cs')
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs20
1 files changed, 20 insertions, 0 deletions
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index e7e44876d..fbf4bc68b 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -1167,6 +1167,26 @@ namespace MediaBrowser.Providers.Manager
return RefreshItem(item, options, cancellationToken);
}
+ /// <summary>
+ /// Runs multiple metadata refreshes concurrently.
+ /// </summary>
+ /// <param name="action">The action to run.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>A <see cref="Task"/> representing the result of the asynchronous operation.</returns>
+ public async Task RunMetadataRefresh(Func<Task> action, CancellationToken cancellationToken)
+ {
+ await _baseItemManager.MetadataRefreshThrottler.Value.WaitAsync(cancellationToken).ConfigureAwait(false);
+
+ try
+ {
+ await action().ConfigureAwait(false);
+ }
+ finally
+ {
+ _baseItemManager.MetadataRefreshThrottler.Value.Release();
+ }
+ }
+
/// <inheritdoc/>
public void Dispose()
{