public void Undo () { lock (lockObject) { if (!history.Any()) { throw new Exception("No more commands to undo"); } var cmd = history.Pop(); cmd.Rollback(); } }