Invoke()
은 위임자가 실행될 때까지 호출 스레드를 차단한다는 점을 감안할 때 BeginInvoke()
대기열에 위임 된 위임자보다 우선 순위가 주어지는 지 궁금합니다. 정의에 따르면 그 중요도는 덜 중요합니다.주어진 우선 순위에 대해 Dispatcher.Invoke()와 Dispatcher.BeginInvoke()가 같습니까?
누구나 알고 계십니까? 그래, 난 항상 테스트 응용 프로그램을 채찍질 수 있지만 다음 게으른거야 ;-)
Invoke()
은 위임자가 실행될 때까지 호출 스레드를 차단한다는 점을 감안할 때 BeginInvoke()
대기열에 위임 된 위임자보다 우선 순위가 주어지는 지 궁금합니다. 정의에 따르면 그 중요도는 덜 중요합니다.주어진 우선 순위에 대해 Dispatcher.Invoke()와 Dispatcher.BeginInvoke()가 같습니까?
누구나 알고 계십니까? 그래, 난 항상 테스트 응용 프로그램을 채찍질 수 있지만 다음 게으른거야 ;-)
Dispatcher.Invoke()는 DispatcherPriority를 첫 번째 인수로 사용합니다. 상대적으로 우선 순위가 낮습니다. 그렇지 않으면 FIFO 큐로 작동하고, 먼저 와서 첫 번째 서브합니다. 다소 의미가있는 우선 순위는 호출 대기열이 백업 된 경우에만 의미가 있습니다. 을 원하는 조건은이 아닙니다. 그런 식으로 작동한다면 다소 불쾌한 버그 팩토리, 코드는 기계 속도와로드에 따라 예기치 않은 순서로 실행됩니다.
Invoke()가 비동기 적이면서 BeginInvoke는 동기식입니다 (사용자가 지적한대로). 내가 아는 한, 동일한 우선 순위가 사용되었다고 가정하면 Dispatcher 큐에서 BeginInvoke를 통해 호출을 호출하지 않지만이 테스트 애플리케이션을 채찍질 할 수 있습니다. :)
재주문에 대한 좋은 지적. BeginInvoked 물건에 대한 실행 명령에 의존하기 때문에 Invoked 물건 우선 순위가 문제를 일으킨다는 것에 동의합니다. 건배. – GazTheDestroyer