2017-12-21 127 views
6

Czy istnieje dokumentacja dotycząca dokładnego znaczenia każdej z wartości wyliczeniowych w odniesieniu do aplikacji WPF.Dyspozytornia priorytetowa w WPF

Czy jest jakaś praktyczna różnica między Background/ContextIdle/ApplicationIdle? Zauważyłem, że używam każdego z nich w różnych częściach mojego kodu i chciałbym ujednolicić jedną wartość.

Typowym zastosowaniem byłby kontroler TreeView związany z danymi. Podczas ustawiania elementu jako zaznaczonego (w ViewModel), chcę najpierw rozwinąć wszystkie jego elementy nadrzędne (ponownie w ViewModel), a następnie poczekać aż zostaną w pełni wyrenderowane (w widoku) przed faktycznym ustawieniem wybranej właściwości.

+0

Dobre pytanie, ale "wybierz jedną" może być wystarczającą odpowiedzią. –

+0

Wierzę, że bezczynność aplikacji może trochę opóźnić się od pozostałych dwóch. Wybrałbym klasę o najwyższym priorytecie, która spełnia to, czego potrzebujesz, w każdym przypadku, a także rozważyć, czy naprawdę potrzebujesz być w ogóle tą drogą wysyłania - ponieważ może to spowodować niestabilność aplikacji, jeśli nie jesteś ostrożny. –

+1

Które byłoby "Tło" i prawdopodobnie najlepiej reprezentowałoby to, co chcesz zrobić, tj. Uruchomić coś "w tle". To powiedziawszy, * mój * kod wyglądał lepiej po usunięciu jakiegokolwiek wystąpienia DispatcherPriority. – Clemens

Odpowiedz

0

Najlepszym sposobem zrozumienia, jak to działa, jest wyświetlenie kodu źródłowego.

kod źródłowy

.Net Framework jest dostępny na https://referencesource.microsoft.com/

można uzyskać odpowiedzi na swoje pytanie po sprawdzeniu i zrozumienie tego kodu https://referencesource.microsoft.com/#WindowsBase/Base/System/Windows/Threading/Dispatcher.cs,ad208569500b2a1d

Moja szybkie zrozumienie: istnieje wiele Priorytety są po to, aby dać możliwość dokładniejszego określenia priorytetu operacji, jeśli będzie to potrzebne w twoim kodzie. Nie ma żadnych ukrytych zdarzeń/stanów do wykonywania operacji określonych priorytetów. Alghoritm podejmie zadanie o najwyższym priorytecie i powoła go, i tak dalej.