diff options
| author | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-23 12:54:51 -0500 |
|---|---|---|
| committer | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-23 12:54:51 -0500 |
| commit | 465f0cc1e2e4fc50a0adbef79a4a317eec5eb454 (patch) | |
| tree | 1379228a1c9ae8e3d54655e24e5bb31e3a08e128 /MediaBrowser.Controller/MediaInfo | |
| parent | 17c1fd576057bdd2d6aea517d733fe8af6e6b2ba (diff) | |
moved some network code to the networking assembly
Diffstat (limited to 'MediaBrowser.Controller/MediaInfo')
| -rw-r--r-- | MediaBrowser.Controller/MediaInfo/FFMpegManager.cs | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs index 7ef70ea420..9c9b0e9f2d 100644 --- a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs +++ b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs @@ -634,7 +634,7 @@ namespace MediaBrowser.Controller.MediaInfo await AudioImageResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); - await process.RunAsync().ConfigureAwait(false); + await RunAsync(process).ConfigureAwait(false); AudioImageResourcePool.Release(); @@ -713,7 +713,7 @@ namespace MediaBrowser.Controller.MediaInfo await AudioImageResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); - await process.RunAsync().ConfigureAwait(false); + await RunAsync(process).ConfigureAwait(false); AudioImageResourcePool.Release(); @@ -768,7 +768,7 @@ namespace MediaBrowser.Controller.MediaInfo await AudioImageResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); - await process.RunAsync().ConfigureAwait(false); + await RunAsync(process).ConfigureAwait(false); AudioImageResourcePool.Release(); @@ -972,6 +972,23 @@ namespace MediaBrowser.Controller.MediaInfo } /// <summary> + /// Provides a non-blocking method to start a process and wait asynchronously for it to exit + /// </summary> + /// <param name="process">The process.</param> + /// <returns>Task{System.Boolean}.</returns> + private static Task<bool> RunAsync(Process process) + { + var tcs = new TaskCompletionSource<bool>(); + + process.EnableRaisingEvents = true; + process.Exited += (sender, args) => tcs.SetResult(true); + + process.Start(); + + return tcs.Task; + } + + /// <summary> /// Sets the error mode. /// </summary> /// <param name="uMode">The u mode.</param> |
