コード例 #1
0
ファイル: Experiment.cs プロジェクト: radtek/HeuristicLabPlay
        public void Stop()
        {
            if ((ExecutionState != ExecutionState.Started) && (ExecutionState != ExecutionState.Paused))
            {
                throw new InvalidOperationException(string.Format("Stop not allowed in execution state \"{0}\".", ExecutionState));
            }
            if (Optimizers.Count == 0)
            {
                return;
            }

            experimentStarted = false;
            experimentStopped = true;
            if (Optimizers.Any(x => (x.ExecutionState == ExecutionState.Started) || (x.ExecutionState == ExecutionState.Paused)))
            {
                foreach (var optimizer in Optimizers.Where(x => (x.ExecutionState == ExecutionState.Started) || (x.ExecutionState == ExecutionState.Paused)))
                {
                    // a race-condition may occur when the optimizer has changed the state by itself in the meantime
                    try { optimizer.Stop(); } catch (InvalidOperationException) { }
                }
            }
            else
            {
                OnStopped();
            }
        }
コード例 #2
0
        public void Prepare(bool clearRuns)
        {
            if ((ExecutionState != ExecutionState.Prepared) && (ExecutionState != ExecutionState.Paused) && (ExecutionState != ExecutionState.Stopped))
            {
                throw new InvalidOperationException(string.Format("Prepare not allowed in execution state \"{0}\".", ExecutionState));
            }
            if (Optimizers.Count == 0)
            {
                return;
            }

            if (clearRuns)
            {
                runs.Clear();
            }

            experimentStarted = false;
            experimentStopped = false;
            foreach (IOptimizer optimizer in Optimizers.Where(x => x.ExecutionState != ExecutionState.Started))
            {
                // a race-condition may occur when the optimizer has changed the state by itself in the meantime
                try { optimizer.Prepare(clearRuns); }
                catch (InvalidOperationException) { }
            }
        }