mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-04 03:27:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Diagnostics;
 | 
						|
using System.IO;
 | 
						|
using System.Linq;
 | 
						|
using System.Threading.Tasks;
 | 
						|
using MediaBrowser.Model.Diagnostics;
 | 
						|
 | 
						|
namespace Emby.Common.Implementations.Diagnostics
 | 
						|
{
 | 
						|
    public class CommonProcess : IProcess
 | 
						|
    {
 | 
						|
        public event EventHandler Exited;
 | 
						|
 | 
						|
        private readonly ProcessOptions _options;
 | 
						|
        private readonly Process _process;
 | 
						|
 | 
						|
        public CommonProcess(ProcessOptions options)
 | 
						|
        {
 | 
						|
            _options = options;
 | 
						|
 | 
						|
            var startInfo = new ProcessStartInfo
 | 
						|
            {
 | 
						|
                Arguments = options.Arguments,
 | 
						|
                FileName = options.FileName,
 | 
						|
                WorkingDirectory = options.WorkingDirectory,
 | 
						|
                UseShellExecute = options.UseShellExecute,
 | 
						|
                CreateNoWindow = options.CreateNoWindow,
 | 
						|
                RedirectStandardError = options.RedirectStandardError,
 | 
						|
                RedirectStandardInput = options.RedirectStandardInput,
 | 
						|
                RedirectStandardOutput = options.RedirectStandardOutput
 | 
						|
            };
 | 
						|
 | 
						|
#if NET46
 | 
						|
            startInfo.ErrorDialog = options.ErrorDialog;
 | 
						|
 | 
						|
            if (options.IsHidden)
 | 
						|
            {
 | 
						|
                startInfo.WindowStyle = ProcessWindowStyle.Hidden;
 | 
						|
            }
 | 
						|
#endif    
 | 
						|
 | 
						|
            _process = new Process
 | 
						|
            {
 | 
						|
                StartInfo = startInfo
 | 
						|
            };
 | 
						|
 | 
						|
            if (options.EnableRaisingEvents)
 | 
						|
            {
 | 
						|
                _process.EnableRaisingEvents = true;
 | 
						|
                _process.Exited += _process_Exited;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private void _process_Exited(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            if (Exited != null)
 | 
						|
            {
 | 
						|
                Exited(this, e);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public ProcessOptions StartInfo
 | 
						|
        {
 | 
						|
            get { return _options; }
 | 
						|
        }
 | 
						|
 | 
						|
        public StreamWriter StandardInput
 | 
						|
        {
 | 
						|
            get { return _process.StandardInput; }
 | 
						|
        }
 | 
						|
 | 
						|
        public StreamReader StandardError
 | 
						|
        {
 | 
						|
            get { return _process.StandardError; }
 | 
						|
        }
 | 
						|
 | 
						|
        public StreamReader StandardOutput
 | 
						|
        {
 | 
						|
            get { return _process.StandardOutput; }
 | 
						|
        }
 | 
						|
 | 
						|
        public int ExitCode
 | 
						|
        {
 | 
						|
            get { return _process.ExitCode; }
 | 
						|
        }
 | 
						|
 | 
						|
        public void Start()
 | 
						|
        {
 | 
						|
            _process.Start();
 | 
						|
        }
 | 
						|
 | 
						|
        public void Kill()
 | 
						|
        {
 | 
						|
            _process.Kill();
 | 
						|
        }
 | 
						|
 | 
						|
        public bool WaitForExit(int timeMs)
 | 
						|
        {
 | 
						|
            return _process.WaitForExit(timeMs);
 | 
						|
        }
 | 
						|
 | 
						|
        public void Dispose()
 | 
						|
        {
 | 
						|
            _process.Dispose();
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |