public void DisposeInterruptingProgram(string name, bool force = false) { var interruptingProgram = InterruptingPrograms.First(program => program.Name == name); interruptingProgram.Dispose(); InterruptingPrograms.Remove(interruptingProgram); }
/// <summary> /// Adds an interrupting program to the zone. /// </summary> public void AddInterruptingProgram(ReactiveZoneProgram interruptingProgram, ISV isv = null, SyncContext syncContext = null) { interruptingProgram.SetSyncContext(syncContext); interruptingProgram.SetInterruptQueue(InterruptQueue); InterruptingPrograms.Add(interruptingProgram); interruptingProgram.Zone = this; }
public void SetZoneProgramInputs() { ZoneProgramInputs = new Dictionary <string, ZoneProgramInputCollection> { [ZoneProgram.Name] = ZoneProgram.Inputs }; InterruptingPrograms.ToList().ForEach(program => { ZoneProgramInputs[program.Name] = program.Inputs; }); }
public void Stop(bool force = false) { if (Running) { ZoneProgram?.Dispose(force); UnsetProgram(); UnsetupInterruptProcessing(); DisposeAllInterruptingPrograms(); InterruptingPrograms.Clear(); Running = false; } }
public void DisposeAllInterruptingPrograms() { InterruptingPrograms.ToList().ForEach(program => DisposeInterruptingProgram(program.Name)); }