2011-01-13 13 views

Odpowiedz

41

Nie, to nie jest do pracy w tle wątku - to do pracy na UI wątku. Zwykle jest to o nazwie z wątku tła, w celu manipulowania interfejsem użytkownika, który można wykonać tylko w wątku interfejsu użytkownika.

Treść wyrażenia lambda jest kodem, który chcesz wykonać w wątku interfejsu użytkownika.

+1

Jon, popularność Twoich wpisów na SO jest wyjątkowa. Mój kapelusz jest od Ciebie :) –

+8

Należy również wspomnieć, że BeginInvoke może być używany z samego wątku interfejsu użytkownika do działania uzupełniającego w wątku interfejsu użytkownika po pustej kolejce akcji interfejsu użytkownika. Zasadniczo odkładanie pracy do czasu, aż wątek interfejsu użytkownika nie będzie już nic robić. – JustinAngel

+0

@JonSkeet: w jaki sposób mogę wykonać kod w wątku tła, ponieważ ten kod blokuje wyświetlanie paska postępu w interfejsie użytkownika – Rohaan

6

Kod, który aktualizuje interfejs użytkownika z wątku innego niż wątek interfejsu użytkownika, powoduje wystąpienie nieważnego wyjątku dostępu do wątku krzyżowego.

Dyspozytor umożliwia przekazanie kodu do wątku interfejsu użytkownika z innego wątku.

Projekt, który umieściłem w tym poście, pokazuje to między innymi.

WebClient, HttpWebRequest and the UI Thread on Windows Phone 7

2

będziesz musiał użyć Deployment.Current. Dispatcher w aplikacji SilverLight, gdy wykonujesz pracę w wątku pracującym bez interfejsu użytkownika (w kontekście, który nie dziedziczy po DependencyObject) i musisz zaktualizować interfejs użytkownika.

Powiązane problemy