Example #1
0
        private void StartProcess(Process p)
        {
            using (ChangeErrorMode newErrorMode = new ChangeErrorMode(ChangeErrorMode.ErrorModes.FailCriticalErrors | ChangeErrorMode.ErrorModes.NoGpFaultErrorBox))
            {
                p.Start();
                p.BeginOutputReadLine();
                p.BeginErrorReadLine();

                var didExit = p.WaitForExit(Settings.Default.MoveTimeoutSeconds * 1000);
                _botTimer.Stop();

                if (!didExit)
                {
                    if (!p.HasExited)
                    {
                        p.Kill();
                    }
                    OutputAppendLog(String.Format("[GAME]\tBot {0} timed out after {1} ms.", PlayerName,
                                                  _botTimer.ElapsedMilliseconds));
                    OutputAppendLog(String.Format("[GAME]\tKilled process {0}.", _processName));
                }
                else
                {
                    OutputAppendLog(String.Format("[GAME]\tBot {0} finished in {1} ms.", PlayerName,
                                                  _botTimer.ElapsedMilliseconds));
                }

                if ((didExit) && (p.ExitCode != 0))
                {
                    OutputAppendLog(String.Format("[GAME]\tProcess exited with non-zero code {0} from player {1}.",
                                                  p.ExitCode, PlayerName));
                }
            }
        }
Example #2
0
 private void StartProcessWindows(Process p)
 {
     // Prevent silly error has occurred dialogs on Windows...
     using (ChangeErrorMode newErrorMode = new ChangeErrorMode(ChangeErrorMode.ErrorModes.FailCriticalErrors | ChangeErrorMode.ErrorModes.NoGpFaultErrorBox))
     {
         StartProcessCommon(p);
     }
 }