본문 바로가기

Mobile Develop/WinMoDev Q&A

Timer 질문 입니다.

질문자 : jik0101  링크 : http://cafe.naver.com/winmodev/1130
<질문내용>

WM에서는 타이머가 하나밖에 적용이안되는건가요?

 

타이머를 두개 만들었는데 하나는 인식을 하는데 하나는 인식을 못하네요;

<답변내용>

안녕하세요 루나네스 입니다

타이머는 일반적으로 멀티스레딩 환경에서 다중으로 동시에 사용이 가능합니다만..
(간단하게 예기하면) 타이머의 특성상 프로세스 동작 중 타이머가 작업권한을 받았다가 처리 후 반환하는 식 이기 때문에
동시에 사용하기에는 무리가 있습니다
특히 실시간으로 사용하는 것에는 매우 안좋습니다

질문 올리신 내용은 타이머가 인식되지 않는 다는 내용인데요
결론부터 말씀드린다면
타이머를 여러개 사용해도 전부 동작 한다는 것 입니다

tmrTimer1.enable = true;  <- 이 속성의 값이 true가 되어야 타이머가 동작됩니다

다만.. 위에서 언급드린 내용처럼
타이머의 한 주기 이벤트가 종료 되어야 다른 동작이 가능하기 때문에
타이머1의 Tick event에 정의된 내용이 많을 경우
처리를 하는 시간동안 타이머2의 Tick 이벤트를 실행하지 못하는 경우가 있습니다

Timer1의 간격 100ms
Timer2의 간격 500ms 라고 가정하고
Timer1의 Tick 이벤트에서 시스템에 저장되어 있는 파일을 전부 읽어오라는 (예가 너무 무식한가요;;)
명령을 수행하는데 대략 1000ms 가 걸린다고 하면
당연히 타이머2의 이벤트가 하나나 두개쯤 무시 되기도 합니다
(적고 나서 보니.. 진짜 무식하게 예를 들어놨네요;;  이런 개념이다 라고만 이해해 주세요)

타이머에 대한 자세한 내용은 우리카페 [소년포비]님께서 너무나 잘 설명해 주신 내용이 있습니다
http://blog.daum.net/starkcb/117

첨부된 예제는 제가 간단하게 만들어본
폼 컨트롤의 타이머 2개와 Timer class를 이용한 타이머 2개
총 4개의 타이머가 동작하는 예제 입니다

제가 추천해 드리는 방법은
가급적이면 타이머를 사용하지 않고 Thread를 통해서 작업을 진행하는 것이 좋습니다
단점은 Thread에서 직접적으로 폼 컨트롤을 제어가 불가능하기 때문에
Deligate를 사용해서 접근하도록 코딩을 해야 한다는 점 입니다만
최고의 장점으로 다른 작업에 영향을 주지 않을 정도로 정밀도가 향상됩니다

 작성일 : 2010.01.29

보다 자세한 정보는 윈도우 폰/모바일 개발자 모임에서 만나보실 수 있습니다