|
감사합니다~!
한 타이머의 동작을 완료하고나서 이벤트 처리가 되지는 않겠네요.
우선순위가 높은 이벤트가 중간중간에 동작을 하는 거군요.
답변 감사드립니다.
bugfree 님이 쓰신 글 :
: 윈도우에서 발생하는 메세지들은 발생순서대로
: 큐에 들어가지만 윈도우 메세지에도 우선순위가
: 있어요.
:
: 사용자 반응에 즉각 응답해야하는 키보드, 마우스
: 같은 메세지는 우선순위가 높지만 wm_paint
: 타이머 같은 메세지는 순위가 낮아요.
:
: 발생 순서대로 큐에는 들어가지만, 메세지 핸들러로 보낼때는 우선순위가 높은 놈들을 먼저 꺼내서
: 처리하고 낮은것들은 한가할때 보내요.
:
: 그래서 타이머에 의존해서 코딩하는것은
: 좋은 방법이 아니에요
:
:
: 그린비 님이 쓰신 글 :
: : 안녕하세요. 요즘 환절기라서 비염에 감기 걸리는 사람도 있고, 건강 잘 챙기시길 바라면서~
: :
: : 질문 드립니다.
: :
: :
: : VCL 버튼 클릭이벤트나 또는 통신 컴포넌트의 데이터 RCV 이벤트 발생 시, 해당 이벤트 처리가 이뤄지는 타이밍이 궁금합니다.
: :
: : 예를 들어,
: : 메인 프로세스가 하나 있고, 이곳에 타이머가 3개라고 가정했을때 (타이머 Interval은 100ms 정도로 가정)
: : 타이머 순서는 A->B->C 순이라고 가정.
: : TimerA()
: : {
: : 함수1();
: : 함수2();
: : 함수3();
: : }
: :
: : TimerB()
: : {
: : 함수4();
: : }
: :
: : TimerC()
: : {
: : 함수5();
: : }
: : 이러한 구조에서 버튼 클릭 이벤트가 발생하게 되면,
: : 타이머 A,B,C를 완료하고 나서(함수1,2,3,4,5을 완료) 이벤트 처리가 되나요? 아니면, 메인 프로세스에서 어떤 처리를 하고 있던지 즉시 이벤트 처리가 되나요??
: :
: :
: : 목적은 이벤트 발생시 변수에 데이터를 넣고 이 데이터를 기준으로 최초 A타이머의 함수1,2,3이 순차적으로 처리를 하려고 합니다.
: : 만약 TimerA에 함수 2번 동작중 데이터가 변경되면 함수2번 에서 부터 처리가 되면 문제가 됩니다.
: : 함수 1번부터 변경된 데이터를 가지고 처리를 해야 하거든요.
: :
: : 그래서 해결방법으로는 이벤트 발생시 임시데이터를 변경하고 임시데이터를 바로 사용하는게 아니라. 함수1에서 이 임시데이터를 실제 데이터에 대입해서 처리하게끔 하면 함수1->2->3 순차적으로 돌아 갈 것 것 같은데요.
: :
: : 결론적으로 질문은,
: : 1) 이벤트 발생 시점이 정확히 언제인지 잘 몰라서 문의드립니다.
: : 2) 통신 컴포넌트의 데이터 RCV 타이밍도 같은 개념일까요? (IndyTCP 나 IndyFTP 등)
: :
: :
: : 그럼 오늘 하루도 즐프 하시길 바라면서~
: : 조언 부탁드립니다.
: :
|