diff options
| author | Eric Reed <ebr@mediabrowser3.com> | 2013-04-15 17:35:01 -0400 |
|---|---|---|
| committer | Eric Reed <ebr@mediabrowser3.com> | 2013-04-15 17:35:01 -0400 |
| commit | c37825aa123ecc4e9b06a3c108f2cc1ee144a392 (patch) | |
| tree | 27b43e450657af0947eda995a0df9f35cedaa700 /MediaBrowser.Server.Implementations/Library/LibraryManager.cs | |
| parent | 71223ed1a8de3e155c7e0df251c5f19f5263d024 (diff) | |
| parent | 43f7f34b5d7ac5bad34e02ca2c244c10e6f9d14e (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library/LibraryManager.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/LibraryManager.cs | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 6436e7716..eccaf2da4 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -574,7 +574,7 @@ namespace MediaBrowser.Server.Implementations.Library /// <summary> /// The images by name item cache /// </summary> - private readonly ConcurrentDictionary<string, object> _imagesByNameItemCache = new ConcurrentDictionary<string, object>(StringComparer.OrdinalIgnoreCase); + private readonly ConcurrentDictionary<string, BaseItem> _imagesByNameItemCache = new ConcurrentDictionary<string, BaseItem>(StringComparer.OrdinalIgnoreCase); /// <summary> /// Generically retrieves an IBN item @@ -588,7 +588,7 @@ namespace MediaBrowser.Server.Implementations.Library /// <returns>Task{``0}.</returns> /// <exception cref="System.ArgumentNullException"> /// </exception> - private Task<T> GetImagesByNameItem<T>(string path, string name, CancellationToken cancellationToken, bool allowSlowProviders = true, bool forceCreation = false) + private async Task<T> GetImagesByNameItem<T>(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) - { - var task = CreateImagesByNameItem<T>(path, name, cancellationToken, allowSlowProviders); + BaseItem obj; - _imagesByNameItemCache.AddOrUpdate(key, task, (keyName, oldValue) => task); + if (forceCreation || !_imagesByNameItemCache.TryGetValue(key, out obj)) + { + obj = await CreateImagesByNameItem<T>(path, name, cancellationToken, allowSlowProviders).ConfigureAwait(false); - return task; + _imagesByNameItemCache.AddOrUpdate(key, obj, (keyName, oldValue) => obj); } - var obj = _imagesByNameItemCache.GetOrAdd(key, keyname => CreateImagesByNameItem<T>(path, name, cancellationToken, allowSlowProviders)); - - return obj as Task<T>; + return obj as T; } /// <summary> |
