Beispiel #1
0
        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);
                //});
            });
        }
Beispiel #2
0
 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();
     });
 }
Beispiel #3
0
        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);
        }
Beispiel #4
0
 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;
             }
         }
     });
 }
Beispiel #5
0
        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();
        }