diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 6436e77167..eccaf2da43 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -574,7 +574,7 @@ namespace MediaBrowser.Server.Implementations.Library
///
/// The images by name item cache
///
- private readonly ConcurrentDictionary _imagesByNameItemCache = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase);
+ private readonly ConcurrentDictionary _imagesByNameItemCache = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase);
///
/// Generically retrieves an IBN item
@@ -588,7 +588,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// Task{``0}.
///
///
- private Task GetImagesByNameItem(string path, string name, CancellationToken cancellationToken, bool allowSlowProviders = true, bool forceCreation = false)
+ private async Task GetImagesByNameItem(string path, string name, CancellationToken cancellationToken, bool allowSlowProviders = true, bool forceCreation = false)
where T : BaseItem, new()
{
if (string.IsNullOrEmpty(path))
@@ -603,18 +603,16 @@ namespace MediaBrowser.Server.Implementations.Library
var key = Path.Combine(path, FileSystem.GetValidFilename(name));
- if (forceCreation)
+ BaseItem obj;
+
+ if (forceCreation || !_imagesByNameItemCache.TryGetValue(key, out obj))
{
- var task = CreateImagesByNameItem(path, name, cancellationToken, allowSlowProviders);
+ obj = await CreateImagesByNameItem(path, name, cancellationToken, allowSlowProviders).ConfigureAwait(false);
- _imagesByNameItemCache.AddOrUpdate(key, task, (keyName, oldValue) => task);
-
- return task;
+ _imagesByNameItemCache.AddOrUpdate(key, obj, (keyName, oldValue) => obj);
}
- var obj = _imagesByNameItemCache.GetOrAdd(key, keyname => CreateImagesByNameItem(path, name, cancellationToken, allowSlowProviders));
-
- return obj as Task;
+ return obj as T;
}
///