示例#1
0
        public void DisposeInterruptingProgram(string name, bool force = false)
        {
            var interruptingProgram = InterruptingPrograms.First(program => program.Name == name);

            interruptingProgram.Dispose();
            InterruptingPrograms.Remove(interruptingProgram);
        }
示例#2
0
 /// <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;
 }
示例#3
0
 public void SetZoneProgramInputs()
 {
     ZoneProgramInputs = new Dictionary <string, ZoneProgramInputCollection> {
         [ZoneProgram.Name] = ZoneProgram.Inputs
     };
     InterruptingPrograms.ToList().ForEach(program =>
     {
         ZoneProgramInputs[program.Name] = program.Inputs;
     });
 }
示例#4
0
 public void Stop(bool force = false)
 {
     if (Running)
     {
         ZoneProgram?.Dispose(force);
         UnsetProgram();
         UnsetupInterruptProcessing();
         DisposeAllInterruptingPrograms();
         InterruptingPrograms.Clear();
         Running = false;
     }
 }
示例#5
0
 public void DisposeAllInterruptingPrograms()
 {
     InterruptingPrograms.ToList().ForEach(program => DisposeInterruptingProgram(program.Name));
 }