private void OpFaulted(object sender, OpFaultedEventArgs e) { int i = Activities.IndexOf((Unit_Op)sender); //Pause all downstream ops until buffer for (int j = i + 1; j < Activities.Count; j++) { if (Activities[j].IsUnitOp()) { ((Unit_Op)Activities[j]).Paused = true; } else if (Activities[j].IsBuffer()) { //If is buffer and buffer is empty then continue pausing ops if (((Buffer)Activities[j]).Buffer_Empty) { continue; } else { break; } } } //Pause all upstream ops until buffer for (int j = i - 1; j >= 0; j--) { if (Activities[j].IsUnitOp()) { ((Unit_Op)Activities[j]).Paused = true; } else if (Activities[j].IsBuffer()) { //If is buffer and buffer is full then continue pausing ops if (((Buffer)Activities[j]).Buffer_Full) { continue; } else { break; } } } }
protected virtual void OnOpFaulted(OpFaultedEventArgs e) { OpFaulted?.Invoke(this, e); }