2016-06-30 4 views
-2
for (int a = 0; a < Count; ++a) 
{ 
    if (my if) 
    { 
     action; 
     sleep; 
    } 
} 

Вот мой текущий код. Когда я это делаю, спит для каждого члена цикла. Но я хочу, чтобы он спал только один раз для цельного цикла. Как мне это сделать?Сон только один раз каждый раз срабатывает триггеры в петле

Редактировать: Я думаю, я был не очень ясен. Я хочу, чтобы все мои графы совершали действия в одно и то же время и спали. Приведенный выше код спит каждый раз, когда счетчик начинает действовать.

+0

добавить булевскую переменную после первого сна, а затем установить ее в true. sleep допускается, только если логическое значение false. –

+0

, так что если ваш предикат в вашем случае, если это правда, вы хотите сделать ... действие, сон, действие, действие ...? Просто проверяйте, потому что это похоже на маловероятную вещь, которую нужно делать ... – Chris

+0

@ Крис Я хочу, чтобы все мои графы выполняли действие в одно и то же время, а затем спали. – Emir

ответ

1

ли вы имеете в виду это ...

sleep; 

for (int a = 0; a < Count; ++a) 
{ 
    if (my if) 
    { 
     action; 
    } 
} 

или

for (int a = 0; a < Count; ++a) 
{ 
    if (a == 0) 
    { 
     sleep; 
    } 
    action; 
} 
+0

Это не то же самое. Op всегда будет вызывать действие перед тем, как сться. – Chris

+2

непонятно, что хочет OP – lordkain

+1

Сон должен быть после действия, чтобы соответствовать исходному коду OP. – Polyfun

0

Простой логический:

bool slept = false; 
for (int a = 0; a < Count; ++a) 
{ 
    if (myif) 
     { 
      action; 
      if (!slept) 
      { 
       sleep; 
       slept = true; 
      } 
     } 
} 
+0

спал избыточен, потому что вы можете просто проверить «a == 0». – Polyfun

+1

@Polyfun Что делать, если 'myIf' является' false' для a == 0? – user3185569

+0

Что делать, если myif вызывает BSOD? – Polyfun

1
bool isSleepDone = false; 
for (int a = 0; a < Count; ++a) 
{ 
    if (my if) 
    { 
    action; 

    if(!isSleepDone)  
    { 
     sleep; 
     isSleepDone = true; 
    } 
    } 
} 
+1

Мне не нравится сравнивать «bool» с «true» или «false». Я бы изменил его на 'if (! IsSleepDone)' –

+0

isSleepDone избыточен, потому что вы можете просто проверить «a == 0». – Polyfun

+0

Есть тонны способов, как это сделать ...: =) –

0

Это также будет работать:

for (int a = 0; a < Count; ++a) 
{ 
    if (my if) 
    { 
     action; 
     if (a == 0) 
     { 
      sleep; 
     } 
    } 
} 
Смежные вопросы