Dispatcher 대기열을 이해하는 데 도움이 필요하다고 생각합니다.Dispatcher 대기열 이해
새 작업이 도착하면 작업 지정자 큐의 시작 부분에 작업이 추가되고 작업 항목을 처리하려고 할 때 작업 항목이 처음부터 제거됩니다.
좀 더 일반적인 용어로 : 작업이 있으면 작업이 큐에 FIFO 방식으로 저장되고 작업이 남아있을 때 처리됩니다.
The Dispatcher processes the work item queue in a loop. The loop is referred to as a frame.
을하지만 어디 이러한 맥락에서 루프는 다음과 같습니다
MSDN 설명서 here는 loop
과 frame
를 참조한다? 내게있어 루프는 무언가를 반복하고 무언가가 끝나면 다시 시작한다.
그리고 frame
의 개념은 무엇입니까? MSDN 설명서에 따르면 프레임은 대기열 안에있는 작업 항목의 펀치입니까? 그렇다면 정적 메서드 Disptatcher.PushFrame()
을 어떻게 사용해야합니까?
가장 흥미로운 질문은 큐의 현재 상태를 가져올 수있는 방법이 있는지 여부입니다. 특히 큐에있는 항목 수.
이전에 호출 된 메소드 (즉, Dispatcher 대기열에 넣은 메소드)가 실행되어 즉시 대기열에서 제거되거나 다른 시간 동안 마지막으로 처리되는 경우 보유합니까?
알아요,
첫 번째 질문 : 왜? 왜 Dispatcher에 무엇이 필요할까요? 일반적으로 Dispatcher는 단순히 WPF 프로세스의 "메시지 펌프"입니다. 응용 프로그램 코드 (예 : 마우스 동작, 클릭 등)에 대한 WPF UI를 통해 모든 메시지/이벤트/명령을 처리합니다. 응용 프로그램 Run 메서드가 호출되면 PushFrame을 호출하여 해당 루프를 시작합니다. 동일한 스레드에 대해 다른 스레드를 시작할 수 없습니다. Dispatcher는 UI 작업을 처리하기위한 것입니다. –
[스레딩 모델] (http://msdn.microsoft.com/en-us/library/ms741870.aspx)에 대해 읽었습니까? –
이것은 생산자 - 소비자 문제에 대한 표준 솔루션입니다. http://en.wikipedia.org/wiki/Producer-consumer_problem –