diff --git a/Emby.Server.Implementations/Diagnostics/CommonProcess.cs b/Emby.Server.Implementations/Diagnostics/CommonProcess.cs index d8a798c460..2fa762c319 100644 --- a/Emby.Server.Implementations/Diagnostics/CommonProcess.cs +++ b/Emby.Server.Implementations/Diagnostics/CommonProcess.cs @@ -106,25 +106,22 @@ namespace Emby.Server.Implementations.Diagnostics return _process.WaitForExit(timeMs); } + public Task WaitForExitAsync(int timeMs) { - //if (_process.WaitForExit(100)) - //{ - // return Task.FromResult(true); - //} - - //timeMs -= 100; - timeMs = Math.Max(0, timeMs); - - var tcs = new TaskCompletionSource(); - - var cancellationToken = new CancellationTokenSource(timeMs).Token; + //Note: For this function to work correctly, the option EnableRisingEvents needs to be set to true. if (HasExited) { return Task.FromResult(true); } + timeMs = Math.Max(0, timeMs); + + var tcs = new TaskCompletionSource(); + + var cancellationToken = new CancellationTokenSource(timeMs).Token; + _process.Exited += (sender, args) => tcs.TrySetResult(true); cancellationToken.Register(() => tcs.TrySetResult(HasExited)); diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs index 59a6244335..2f9eb98eae 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs @@ -437,7 +437,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles UseShellExecute = false, FileName = _mediaEncoder.EncoderPath, Arguments = string.Format("{0} -i \"{1}\" -c:s srt \"{2}\"", encodingParam, inputPath, outputPath), - + EnableRaisingEvents = true, IsHidden = true, ErrorDialog = false }); @@ -574,7 +574,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles { CreateNoWindow = true, UseShellExecute = false, - + EnableRaisingEvents = true, FileName = _mediaEncoder.EncoderPath, Arguments = processArgs, IsHidden = true,