private void SolveAll() { Data d = (Data)DataContext; Task.Factory.StartNew(() => { TimeMeasure tm = new TimeMeasure(Dispatcher, d.Solvers.Count() * 4); foreach (IAdventSolver adventSolver in d.Solvers) { SolveTask1(adventSolver, d, tm); SolveTask2(adventSolver, d, tm); StartTests1(adventSolver, d, tm); StartTests2(adventSolver, d, tm); } //Parallel.ForEach(d.Solvers, adventSolver => //{ // SolveTask1(adventSolver, d, tm); // SolveTask2(adventSolver, d, tm); // StartTests1(adventSolver, d, tm); // StartTests2(adventSolver, d, tm); //}); }); }
private void StartTests2(IAdventSolver adventSolver, Data d, TimeMeasure tm) { Task.Factory.StartNew(() => { var result = d.Results.Where(x => x.TaskName == adventSolver.SolverName).FirstOrDefault(); try { if (result != null) { tm.Register(result.ResultTest2); result.ResultTest2.Value = string.Join("\n", adventSolver.RunTests2()); tm.Unregister(result.ResultTest2); } } catch (NotImplementedException) { result.ResultTest2.Value = "Task not Implemented"; tm.Unregister(result.ResultTest2); } catch (Exception ex) { result.ResultTest2.Value = ex.ToString(); tm.Unregister(result.ResultTest2); } tm.TaskFinished(); }); }
private void Button_Click_2(object sender, RoutedEventArgs e) { DataItemView div = (sender as Button).DataContext as DataItemView; Data d = DataContext as Data; IAdventSolver solver = d.Solvers.Where(x => x.SolverName == div.TaskName).FirstOrDefault(); TimeMeasure tm = new TimeMeasure(Dispatcher, 1); SolveTask2(solver, d, tm); }
private void SolveTask2(IAdventSolver adventSolver, Data d, TimeMeasure tm) { Task.Factory.StartNew(() => { var result = d.Results.Where(x => x.TaskName == adventSolver.SolverName).FirstOrDefault(); if (result != null) { try { StartSolver(adventSolver.SolveTask2, adventSolver.InputData, result.Result2, tm); } catch (Exception ex) { result.Result2.Value = ex.ToString(); result.Result2.RunningState = ERunningState.Exception; } } }); }
private void StartSolver(Func <string, string> task, string inputData, ResultView rv, TimeMeasure tm) { try { tm.Register(rv); rv.Value = "Running"; rv.RunningState = ERunningState.Running; rv.Value = task(inputData); tm.Unregister(rv); if (string.IsNullOrEmpty(rv.Value)) { rv.Value = "No result"; } rv.RunningState = ERunningState.Finished; } catch (NotImplementedException) { rv.Value = "Task not Implemented"; tm.Unregister(rv); rv.RunningState = ERunningState.NotImplemented; } catch (Exception ex) { rv.Value = ex.ToString(); tm.Unregister(rv); rv.RunningState = ERunningState.Exception; } tm.TaskFinished(); }