浏览代码

Check before flushing ffmpeg log

The stream could have been diposed while writing.
Bond_009 6 年之前
父节点
当前提交
d5f080fefb
共有 1 个文件被更改,包括 9 次插入2 次删除
  1. 9 2
      MediaBrowser.Controller/MediaEncoding/JobLogger.cs

+ 9 - 2
MediaBrowser.Controller/MediaEncoding/JobLogger.cs

@@ -10,7 +10,7 @@ namespace MediaBrowser.Controller.MediaEncoding
 {
     public class JobLogger
     {
-        private readonly CultureInfo _usCulture = new CultureInfo("en-US");
+        private static readonly CultureInfo _usCulture = CultureInfo.ReadOnly(new CultureInfo("en-US"));
         private readonly ILogger _logger;
 
         public JobLogger(ILogger logger)
@@ -24,7 +24,7 @@ namespace MediaBrowser.Controller.MediaEncoding
             {
                 using (var reader = new StreamReader(source))
                 {
-                    while (!reader.EndOfStream)
+                    while (!reader.EndOfStream && reader.BaseStream.CanRead)
                     {
                         var line = await reader.ReadLineAsync().ConfigureAwait(false);
 
@@ -39,6 +39,13 @@ namespace MediaBrowser.Controller.MediaEncoding
                         }
 
                         await target.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);
+
+                        // Check again, the stream could have been closed
+                        if (!target.CanWrite)
+                        {
+                            break;
+                        }
+
                         await target.FlushAsync().ConfigureAwait(false);
                     }
                 }