Пример #1
0
        // @environmentOverride overrides even the global override values
        public static ProcessWrapper StartProcess(ProcessStartInfo startInfo, ProcessEventHandler outputStreamChanged, ProcessEventHandler errorStreamChanged, EventHandler exited, StringDictionary environmentOverride)
        {
            if (startInfo == null)
            {
                throw new ArgumentException("startInfo");
            }

            ProcessWrapper p = new ProcessWrapper();

            if (outputStreamChanged != null)
            {
                p.OutputStreamChanged += outputStreamChanged;
            }

            if (errorStreamChanged != null)
            {
                p.ErrorStreamChanged += errorStreamChanged;
            }

            if (exited != null)
            {
                p.Exited += exited;
            }

            p.StartInfo = startInfo;
            ProcessEnvironmentVariableOverrides(p.StartInfo, environmentOverride);

            // WORKAROUND for "Bug 410743 - wapi leak in System.Diagnostic.Process"
            // Process leaks when an exit event is registered
            // instead we use another thread to monitor I/O and wait for exit
            // p.EnableRaisingEvents = true;

            p.Start();
            return(p);
        }
		// @environmentOverride overrides even the global override values
		public static ProcessWrapper StartProcess (ProcessStartInfo startInfo, ProcessEventHandler outputStreamChanged, ProcessEventHandler errorStreamChanged, EventHandler exited, StringDictionary environmentOverride)
		{
			if (startInfo == null)
				throw new ArgumentException ("startInfo");

			ProcessWrapper p = new ProcessWrapper();

			if (outputStreamChanged != null) {
				p.OutputStreamChanged += outputStreamChanged;
			}

			if (errorStreamChanged != null)
				p.ErrorStreamChanged += errorStreamChanged;

			if (exited != null)
				p.Exited += exited;

			p.StartInfo = startInfo;
			ProcessEnvironmentVariableOverrides (p.StartInfo, environmentOverride);

			// WORKAROUND for "Bug 410743 - wapi leak in System.Diagnostic.Process"
			// Process leaks when an exit event is registered
			// instead we use another thread to monitor I/O and wait for exit
			// p.EnableRaisingEvents = true;

			p.Start ();
			return p;
		}