private void optimizer_Stopped(object sender, EventArgs e) { lock (locker) { if (experimentStopped) { if (Optimizers.All(x => (x.ExecutionState == ExecutionState.Stopped) || (x.ExecutionState == ExecutionState.Prepared))) { OnStopped(); } } else { if (experimentStarted && Optimizers.Any(x => (x.ExecutionState == ExecutionState.Prepared) || (x.ExecutionState == ExecutionState.Paused))) { Optimizers.First(x => (x.ExecutionState == ExecutionState.Prepared) || (x.ExecutionState == ExecutionState.Paused)).Start(); } else if (Optimizers.All(x => x.ExecutionState == ExecutionState.Stopped)) { OnStopped(); } else if (Optimizers.Any(x => (x.ExecutionState == ExecutionState.Prepared) || (x.ExecutionState == ExecutionState.Paused)) && Optimizers.All(o => o.ExecutionState != ExecutionState.Started)) { OnPaused(); } } } }
private void optimizer_Prepared(object sender, EventArgs e) { lock (locker) if (Optimizers.All(x => x.ExecutionState == ExecutionState.Prepared)) { OnPrepared(); } }
private void optimizer_Paused(object sender, EventArgs e) { lock (locker) if (Optimizers.All(x => x.ExecutionState != ExecutionState.Started)) { OnPaused(); } }