Timer와 DispatcherTimer 비교
차이가 무엇인가 between System.Windows.Forms.Timer()
와는 System.Windows.Threading.DispatcherTimer()
? 어떤 경우에 사용해야합니까? 모범 사례가 있습니까?
Windows.Forms.Timer
Windows Forms 메시지 루프를 사용하여 타이머 이벤트를 처리합니다. Windows Forms 응용 프로그램에서 사용되는 타이밍 이벤트를 작성할 때 사용해야하며 기본 UI 스레드에서 타이머를 실행하려고합니다.
DispatcherTimer
WPF 타이밍 메커니즘입니다. 유사한 방식으로 타이밍을 처리하려는 경우 (단일 스레드에 국한되지는 않지만 각 스레드에는 자체 디스패처가 있음) WPF를 사용하는 경우에 사용해야합니다. Dispatcher와 동일한 스레드에서 이벤트를 발생시킵니다.
일반적으로, WPF == DispatcherTimer
그리고 Windows Forms == Forms.Timer
.
즉 , 별도의 스레드에서 실행 System.Threading.Timer
되는 타이머 class
인도 있습니다. 이것은 UI 업데이트를 시도하지 않는 순전히 수치 타이밍에 좋습니다.
여기에 작은 예제가있는 타이머에 대한 좋은 기사를 찾았습니다. http://www.progware.org/Blog/post/Timers-in-WPF.aspx
결론적으로 :
DoSomething ()이 GUI 구성 요소를 조작하는 경우 Timer를 사용하여 다음을 사용해야합니다. this.Dispatcher.Invoke ((Action) delegate {// GUI RELATED CODE HERE} 다른 스레드에서 직접 GUI 컨트롤에 액세스 할 수 없기 때문입니다. DispatcherTimer를 사용하면 수행 할 수 있습니다. 그렇게 할 필요가 없습니다.
DoSomething ()이 시간이 많이 걸리는 작업을 수행하면 DispatcherTimer의 경우 GUI가 중지됩니다. Timer의 경우 긴 메 토스가 다른 스레드에서 실행되기 때문에 그렇지 않습니다.
참고 URL : https://stackoverflow.com/questions/1111645/comparing-timer-with-dispatchertimer
'programing' 카테고리의 다른 글
OperationCanceledException과 TaskCanceledException의 차이점은 무엇입니까? (0) | 2020.08.27 |
---|---|
JAXB 2의 ObjectFactory 클래스의 요점은 무엇입니까? (0) | 2020.08.27 |
Python 2.7에서 인쇄 된 괄호가 자발적인 이유는 무엇입니까? (0) | 2020.08.27 |
컴파일하는 동안 -pthread와 -lpthread의 차이점 (0) | 2020.08.27 |
패치를 적용 할 때 "1 줄에 공백 오류 추가"란 무엇을 의미합니까? (0) | 2020.08.27 |