Zmień formanty WPF z wątku innego niż główny za pomocą Dispatcher.Invoke
Niedawno zacząłem programować w WPF i wpadłem na następujący problem. Nie rozumiem, jak korzystać zDispatcher.Invoke()
metoda. Mam doświadczenie w wątkowaniu i zrobiłem kilka prostych programów Windows Forms, w których właśnie użyłem
Control.CheckForIllegalCrossThreadCalls = false;
Tak, wiem, że to dość kiepskie, ale były to proste aplikacje monitorujące.
Faktem jest, teraz robię aplikację WPF, która pobiera dane w tle, rozpoczynam nowy wątek, aby wywołać pobieranie danych (z serwera WWW), teraz chcę wyświetlić go na moim formularzu WPF. Rzecz w tym, że nie mogę ustawić żadnej kontroli z tego wątku. Nawet etykieta ani nic. Jak można to rozwiązać?
Odpowiedzi na komentarze:
@Jalfp:
Więc używam tej metody Dispatchera w „nowym bieżniku”, kiedy otrzymuję dane? Czy też powinienem sprawić, by pracownik działający w tle odzyskał dane, umieścił je w polu i uruchomił nowy wątek, który czeka, aż to pole zostanie wypełnione, i wezwie dyspozytora, aby pokazał pobrane dane do kontrolek?