int i = 0;
while(!ある条件){
ある条件の間はずっと待ちながら処理;
if(i == 0){
ある条件になるのを待ってるけど、ある条件になった時1回だけ動く処理;
i = 1;
}
}

でいいんじゃね?