private void BufferFull(object sender, BufferFullEventArgs e) { int i = Activities.IndexOf((Buffer)sender); bool downstream_running = false; if (Activities[i + 1].IsUnitOp()) { downstream_running = ((Unit_Op)Activities[i + 1]).Running; } //Pause all upstream ops if downstream not running until buffer if (!downstream_running) { for (int j = i - 1; j >= 0; j--) { if (Activities[j].IsUnitOp()) { ((Unit_Op)Activities[j]).Paused = true; } else if (Activities[j].IsBuffer()) { Buffer buff = (Buffer)Activities[j]; if (buff.Buffer_Full) { continue; } else { break; } } } } }
//Invoke Buffer Full event that is handled within Process class protected virtual void OnBufferFull(BufferFullEventArgs e) { BufferFull?.Invoke(this, e); }