public long?Read() { if (ReadQueue.Any()) { return(ReadQueue.Dequeue()); } else { return(null); } }
public void TakeOneStep() { if (IsFinished) { return; } if (IsWaiting && ReadQueue.Any()) { IsWaiting = false; } var currentInstruction = Instructions[CurrentIndex]; Log($"{ProgramId}: {currentInstruction.GetType().Name}"); var indexBeforeChange = CurrentIndex; currentInstruction.Perform(this); if (!IsWaiting && CurrentIndex == indexBeforeChange) { CurrentIndex++; } }