Q&A

  • 타이머에 관하여...
FTimeOutTimer := TTimer.Create(Self);
FTimeOutTimer.Interval := 5000;
FTimeOutTimer.Enabled  := False;
FTimeOutTImer.OnTimer  := A;

FAIReadTimer := TTimer.Create(Self);
FAIReadTimer.Interval := 250;
FAIReadTimer.Enabled  := False;
FAIReadTimer.OnTimer  := B;

대충 이런식으로 타이머 정의해서 사용하고 있는데요...
5000 이라는 시간이 되면 A 를 실행하자나요...
근데 그게 실행하는데 꽤 길거든요....
그럼 B 할 시간이 되면 어떻게 되나요?

A 하다가 그냥 B 로 넘어가나요 아님 A 다 맞히고 B 로 가나요?
만약 이런게 4~5게 있다면 어찌 되나요?

쓰레드도 3개 정도 쓰고 있거든요...( 상관있는지 모르겠네요... )

질문을 제대로 했는지도 모르겠네요...
제가 델피초보라....ㅠ.ㅠ
그럼 즐~~~


1  COMMENTS
  • Profile
    이준희 2003.01.14 02:34
    타이머는 WM_TIMER 메시지로 작동합니다. 메시지는 메시지 큐에 쌓여서
    한넘씩 읽어서 처리되는거 아시죠?

    만약 FTimeOutTimer 의 이벤트를 실행하는데 혹은 딴 짓거리(?)를 하는동안
    FAIReadTimer 이벤트에 대한 메시지가 2개이상 들어왔을 경우 이전의 메시지는 무시됩니다.
    즉 한번만 실행됩니다.
    또 긴 일을 해야되는데 (최소한 같은 쓰레드에서) 중간에 메시지 처리 (Application.ProcessMessage) 를 안해주면 그거 다 끝나고 나서 메시지 처리합니다.
    즉 하던 일 끝날때까지 절대 호출되지 않습니다. (강제로 호출하지 않는이상)