2016-06-27 3 views
1

여기 내 코드입니다 : 나는 내 명령을 실행하는 데 걸리는 정확히 얼마나 알고루프가 활성화되어있는 동안 타이머가 실행 중입니까?

setTimer(delay, (SEEDKEY_MAXTRY * SEEDKEY_FREQ) + (LOGIN_MAXTRY * LOGIN_FREQ)); 
do { 
    // waits, until all operations have been executed; 
} while(isTimerActive(delay)); 

, 그래서 명시 적 값으로 타이머 delay을 설정합니다. 내가 값을 돌려 줄 때까지 기다려야 해.

이 시점에서 시뮬레이션이 멈추었습니다. 패널이 Windows- "응답 없음"으로 들어가고 시뮬레이션을 끝낼 수있는 유일한 방법은 Taskmanager를 사용하는 것입니다.

나는 do ... while 진술을하는 동안 타이머에 더 많은 시간이 필요하거나 전혀 실행되지 않는다고 생각합니다. (같은 동안 {})

누가 내 생각에 문제를 확인하거나 내 문제를 해결해 줄 수 있습니까?

답변

0

... 방법을 알고 싶은 독자를 들어


CAPL에 유래 너무 인기가 아니기 때문에 난 항상, 해결 방법을 찾을 수 확인 :

난 그냥 글로벌 상태 변수를 사용 처리가 끝날 때까지 사용자가 작업 수행을 제한 할 수 있습니다.

+0

CAPL을 모르지만 대부분의 다른 언어 타이머는 흐름 제어와 독립적입니다. –

+0

CAPL에서도 마찬가지 여야하지만 루프 때문에 제대로 작동하지 않으므로 다른 방식으로 수행했습니다. 누군가 위의 코드에서 다른 오류를 발견하지 못한다면, CAPL은 타이머를 사용하여 계산 된 결과에 의존하는 루프를 사용하여 다소 버그가있을 수 있다고 생각합니다. –