浏览代码

Clean up synchronization (#11458)

Mark Cilia Vincenti 1 年之前
父节点
当前提交
af74aa35d7

+ 5 - 9
MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs

@@ -247,7 +247,7 @@ namespace MediaBrowser.MediaEncoding.Attachments
             MediaSourceInfo mediaSource,
             CancellationToken cancellationToken)
         {
-            var outputFileLocks = new List<AsyncKeyedLockReleaser<string>>();
+            var outputFileLocks = new List<IDisposable>();
             var extractableAttachmentIds = new List<int>();
 
             try
@@ -256,16 +256,15 @@ namespace MediaBrowser.MediaEncoding.Attachments
                 {
                     var outputPath = GetAttachmentCachePath(mediaPath, mediaSource, attachment.Index);
 
-                    var @outputFileLock = _semaphoreLocks.GetOrAdd(outputPath);
-                    await @outputFileLock.SemaphoreSlim.WaitAsync(cancellationToken).ConfigureAwait(false);
+                    var releaser = await _semaphoreLocks.LockAsync(outputPath, cancellationToken).ConfigureAwait(false);
 
                     if (File.Exists(outputPath))
                     {
-                        @outputFileLock.Dispose();
+                        releaser.Dispose();
                         continue;
                     }
 
-                    outputFileLocks.Add(@outputFileLock);
+                    outputFileLocks.Add(releaser);
                     extractableAttachmentIds.Add(attachment.Index);
                 }
 
@@ -280,10 +279,7 @@ namespace MediaBrowser.MediaEncoding.Attachments
             }
             finally
             {
-                foreach (var @outputFileLock in outputFileLocks)
-                {
-                    @outputFileLock.Dispose();
-                }
+                outputFileLocks.ForEach(x => x.Dispose());
             }
         }
 

+ 5 - 9
MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs

@@ -457,7 +457,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
         /// <returns>Task.</returns>
         private async Task ExtractAllTextSubtitles(MediaSourceInfo mediaSource, CancellationToken cancellationToken)
         {
-            var locks = new List<AsyncKeyedLockReleaser<string>>();
+            var locks = new List<IDisposable>();
             var extractableStreams = new List<MediaStream>();
 
             try
@@ -469,16 +469,15 @@ namespace MediaBrowser.MediaEncoding.Subtitles
                 {
                     var outputPath = GetSubtitleCachePath(mediaSource, subtitleStream.Index, "." + GetTextSubtitleFormat(subtitleStream));
 
-                    var @lock = _semaphoreLocks.GetOrAdd(outputPath);
-                    await @lock.SemaphoreSlim.WaitAsync(cancellationToken).ConfigureAwait(false);
+                    var releaser = await _semaphoreLocks.LockAsync(outputPath, cancellationToken).ConfigureAwait(false);
 
                     if (File.Exists(outputPath))
                     {
-                        @lock.Dispose();
+                        releaser.Dispose();
                         continue;
                     }
 
-                    locks.Add(@lock);
+                    locks.Add(releaser);
                     extractableStreams.Add(subtitleStream);
                 }
 
@@ -493,10 +492,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
             }
             finally
             {
-                foreach (var @lock in locks)
-                {
-                    @lock.Dispose();
-                }
+                locks.ForEach(x => x.Dispose());
             }
         }