Beispiel #1
0
        private void Dispose(bool disposing)
        {
            if (disposing && !IsDisposing)
            {
                IsDisposing = true;

                if (TimerCheckRpcAvailability != null)
                {
                    TimerCheckRpcAvailability.Dispose();
                    TimerCheckRpcAvailability = null;
                }

                StopProcess();
            }
        }
Beispiel #2
0
        protected void StartProcess(IEnumerable <string> arguments)
        {
            if (Process != null)
            {
                Process.Dispose();
            }

            Process = new Process {
                EnableRaisingEvents = true,
                StartInfo           = new ProcessStartInfo(Path)
                {
                    CreateNoWindow         = true,
                    UseShellExecute        = false,
                    RedirectStandardOutput = true,
                    RedirectStandardError  = true,
                    RedirectStandardInput  = true
                }
            };

            if (arguments != null)
            {
                Process.StartInfo.Arguments = string.Join(" ", arguments);
            }

            Process.OutputDataReceived += OnProcessOutputDataReceived;
            Process.Exited             += OnProcessExited;

            Process.Start();
            Process.BeginOutputReadLine();

            if (TimerCheckRpcAvailability != null)
            {
                // Constantly check for the RPC port's activeness
                TimerCheckRpcAvailability.Change(Utilities.TimerSettingRpcCheckAvailabilityDueTime, Utilities.TimerSettingRpcCheckAvailabilityPeriod);
            }
        }