public void Run() { object input = (RunMode == RunModes.Solution) ? SolutionInput : TestInput; object response = Run(RunMode, input, Logging); object solution = (RunMode == RunModes.Solution) ? SolutionResponse : TestResponse; RunResponse = new RunResponse(input, response, solution); //Console.WriteLine(String.Format("{0}", response)); //return new RunResponse(input, response, solution); }
public void Run(Problem problemToSolve, RunModes runMode, BatchModes batchMode = BatchModes.None) { problemToSolve.RunMode = runMode; problemToSolve.Logging = Logging; Thread problemThread = new Thread(problemToSolve.Run); DateTime start = DateTime.Now; problemThread.Start(); bool useTimer = batchMode != BatchModes.None; bool tooSlow = false; Timer EulerTimer = new Timer( (obj) => { if (useTimer) { if (problemThread.ThreadState == ThreadState.Running) { useTimer = false; tooSlow = true; Console.WriteLine(String.Format("{0} - {1}", problemToSolve.GetType(), SlowString)); var stat = new Statistics(problemToSolve.GetType(), SlowString, new TimeSpan(0, 1, 0), false); StatisticsWriter.Add(stat); problemThread.Abort(); } } }, null, Minute, Minute); problemThread.Join(); if (!tooSlow) { useTimer = false; RunResponse response = problemToSolve.RunResponse; var elapsed = DateTime.Now - start; var correct = response.Response != null && response.Solution != null && response.Response.Equals(response.Solution); var stat = new Statistics(problemToSolve.GetType(), response.Response, elapsed, correct); StatisticsWriter.Add(stat); //if (!batchMode) { Console.WriteLine(stat); //} } }