Browse Source

Use ConfigureAwait in DirectRecorder

Patrick Barron 1 year ago
parent
commit
ce6c0ad02b
1 changed files with 25 additions and 15 deletions
  1. 25 15
      Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs

+ 25 - 15
Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs

@@ -46,7 +46,15 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
         {
         {
             Directory.CreateDirectory(Path.GetDirectoryName(targetFile) ?? throw new ArgumentException("Path can't be a root directory.", nameof(targetFile)));
             Directory.CreateDirectory(Path.GetDirectoryName(targetFile) ?? throw new ArgumentException("Path can't be a root directory.", nameof(targetFile)));
 
 
-            await using (var output = new FileStream(targetFile, FileMode.CreateNew, FileAccess.Write, FileShare.Read, IODefaults.FileStreamBufferSize, FileOptions.Asynchronous))
+            var output = new FileStream(
+                targetFile,
+                FileMode.CreateNew,
+                FileAccess.Write,
+                FileShare.Read,
+                IODefaults.FileStreamBufferSize,
+                FileOptions.Asynchronous);
+
+            await using (output.ConfigureAwait(false))
             {
             {
                 onStarted();
                 onStarted();
 
 
@@ -80,24 +88,26 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
 
 
             Directory.CreateDirectory(Path.GetDirectoryName(targetFile) ?? throw new ArgumentException("Path can't be a root directory.", nameof(targetFile)));
             Directory.CreateDirectory(Path.GetDirectoryName(targetFile) ?? throw new ArgumentException("Path can't be a root directory.", nameof(targetFile)));
 
 
-            await using var output = new FileStream(targetFile, FileMode.CreateNew, FileAccess.Write, FileShare.Read, IODefaults.CopyToBufferSize, FileOptions.Asynchronous);
-
-            onStarted();
+            var output = new FileStream(targetFile, FileMode.CreateNew, FileAccess.Write, FileShare.Read, IODefaults.CopyToBufferSize, FileOptions.Asynchronous);
+            await using (output.ConfigureAwait(false))
+            {
+                onStarted();
 
 
-            _logger.LogInformation("Copying recording stream to file {0}", targetFile);
+                _logger.LogInformation("Copying recording stream to file {0}", targetFile);
 
 
-            // The media source if infinite so we need to handle stopping ourselves
-            using var durationToken = new CancellationTokenSource(duration);
-            using var linkedCancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, durationToken.Token);
-            cancellationToken = linkedCancellationToken.Token;
+                // The media source if infinite so we need to handle stopping ourselves
+                using var durationToken = new CancellationTokenSource(duration);
+                using var linkedCancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, durationToken.Token);
+                cancellationToken = linkedCancellationToken.Token;
 
 
-            await _streamHelper.CopyUntilCancelled(
-                await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false),
-                output,
-                IODefaults.CopyToBufferSize,
-                cancellationToken).ConfigureAwait(false);
+                await _streamHelper.CopyUntilCancelled(
+                    await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false),
+                    output,
+                    IODefaults.CopyToBufferSize,
+                    cancellationToken).ConfigureAwait(false);
 
 
-            _logger.LogInformation("Recording completed to file {0}", targetFile);
+                _logger.LogInformation("Recording completed to file {0}", targetFile);
+            }
         }
         }
     }
     }
 }
 }