Преглед изворни кода

Minor IAsyncDisposable improvements

Bond_009 пре 5 година
родитељ
комит
38dae51ccf

+ 8 - 5
MediaBrowser.Api/Images/RemoteImageService.cs

@@ -265,17 +265,20 @@ namespace MediaBrowser.Api.Images
             {
                 Url = url,
                 BufferContent = false
-
             }).ConfigureAwait(false);
-            var ext = result.ContentType.Split('/').Last();
+            var ext = result.ContentType.Split('/')[^1];
 
             var fullCachePath = GetFullCachePath(urlHash + "." + ext);
 
             Directory.CreateDirectory(Path.GetDirectoryName(fullCachePath));
-            using (var stream = result.Content)
+            var stream = result.Content;
+            await using (stream.ConfigureAwait(false))
             {
-                using var filestream = new FileStream(fullCachePath, FileMode.Create, FileAccess.Write, FileShare.Read, IODefaults.FileStreamBufferSize, true);
-                await stream.CopyToAsync(filestream).ConfigureAwait(false);
+                var filestream = new FileStream(fullCachePath, FileMode.Create, FileAccess.Write, FileShare.Read, IODefaults.FileStreamBufferSize, true);
+                await using (filestream.ConfigureAwait(false))
+                {
+                    await stream.CopyToAsync(filestream).ConfigureAwait(false);
+                }
             }
 
             Directory.CreateDirectory(Path.GetDirectoryName(pointerCachePath));

+ 9 - 5
MediaBrowser.Api/ItemLookupService.cs

@@ -299,22 +299,26 @@ namespace MediaBrowser.Api
         {
             var result = await _providerManager.GetSearchImage(providerName, url, CancellationToken.None).ConfigureAwait(false);
 
-            var ext = result.ContentType.Split('/').Last();
+            var ext = result.ContentType.Split('/')[^1];
 
             var fullCachePath = GetFullCachePath(urlHash + "." + ext);
 
             Directory.CreateDirectory(Path.GetDirectoryName(fullCachePath));
-            using (var stream = result.Content)
+            var stream = result.Content;
+
+            await using (stream.ConfigureAwait(false))
             {
-                using var fileStream = new FileStream(
+                var fileStream = new FileStream(
                     fullCachePath,
                     FileMode.Create,
                     FileAccess.Write,
                     FileShare.Read,
                     IODefaults.FileStreamBufferSize,
                     true);
-
-                await stream.CopyToAsync(fileStream).ConfigureAwait(false);
+                await using (fileStream.ConfigureAwait(false))
+                {
+                    await stream.CopyToAsync(fileStream).ConfigureAwait(false);
+                }
             }
 
             Directory.CreateDirectory(Path.GetDirectoryName(pointerCachePath));

+ 15 - 11
MediaBrowser.Api/Playback/Hls/BaseHlsService.cs

@@ -209,24 +209,28 @@ namespace MediaBrowser.Api.Playback.Hls
                 try
                 {
                     // Need to use FileShare.ReadWrite because we're reading the file at the same time it's being written
-                    using var fileStream = GetPlaylistFileStream(playlist);
-                    using var reader = new StreamReader(fileStream);
-                    var count = 0;
-
-                    while (!reader.EndOfStream)
+                    var fileStream = GetPlaylistFileStream(playlist);
+                    await using (fileStream.ConfigureAwait(false))
                     {
-                        var line = reader.ReadLine();
+                        using var reader = new StreamReader(fileStream);
+                        var count = 0;
 
-                        if (line.IndexOf("#EXTINF:", StringComparison.OrdinalIgnoreCase) != -1)
+                        while (!reader.EndOfStream)
                         {
-                            count++;
-                            if (count >= segmentCount)
+                            var line = await reader.ReadLineAsync().ConfigureAwait(false);
+
+                            if (line.IndexOf("#EXTINF:", StringComparison.OrdinalIgnoreCase) != -1)
                             {
-                                Logger.LogDebug("Finished waiting for {0} segments in {1}", segmentCount, playlist);
-                                return;
+                                count++;
+                                if (count >= segmentCount)
+                                {
+                                    Logger.LogDebug("Finished waiting for {0} segments in {1}", segmentCount, playlist);
+                                    return;
+                                }
                             }
                         }
                     }
+
                     await Task.Delay(100, cancellationToken).ConfigureAwait(false);
                 }
                 catch (IOException)