2011-07-28 6 views
3

많은 복잡한 변환기 (IValueConverter, IMultiValueConverter)가 포함 된 매우 복잡한 WPF UI의 렌더링 문제에 직면하고 있습니다.WPF 변환기는 어떻게 실행됩니까?

변환기가이 문제에 관련 될 수 있는지 알고 싶습니다.

WPF 변환기가 어떻게 작동했는지 아는 사람 있습니까? 병렬로 실행 한 다음 UI 스레드와 동기화합니까? 아니면 모든 변환기를 처리 foreach 루프의 일종인가?

답변

8

변환기가 UI 스레드에서 실행되므로 Thread.Sleep(10000)과 같은 것을 사용하여 스레드를 차단하여이를 테스트 할 수 있습니다. UI는 디스패처 큐에서 관리됩니다. 자세한 내용은 threading model reference을 참조하십시오. 바인딩에 대한 업데이트가 해당 큐에 푸시됩니다. 바인딩이 업데이트되면 변환기가 호출되며 일반적으로 동시에 호출되지 않습니다.

은 (또한 아래의 좋은 의견을 참조)

+1

+1, 멋지게 말로. 또한, UI 스레드를 실행하는 데 오랜 시간이 걸리는 변환기가 있으면 UI를 차단할 것이므로 추가하고 싶습니다. –

+1

+1, 좋은 설명. 참고 사항 : 변환기는 비동기 적 * 인 경우에도 UI 스레드 *에서 실행됩니다 (IsAsync = True). 속성 값은 소스에서 비동기 적으로 검색된 다음 변환기가 UI 스레드에서 동 기적으로 실행됩니다. –

+0

@ThomasLevesque : 나는 직관적이지 못하기 때문에 이것을 첨가하는 것이 좋다. 좋은 지적이다. –

관련 문제