Ho visto questo formato Deployment.Current.Dispatcher.BeginInvoke (() => {...}) in qualche codice. È usato per fare un lavoro in Background? Quali sono gli usi generali di esso?Qual è l'uso di Deployment.Current.Dispatcher.BeginInvoke (() => {...})?
risposta
No, non è fare un lavoro in uno sfondo filo - è di fare un lavoro sulla UI thread. Quindi è normalmente chiamato da un thread in background, al fine di manipolare l'interfaccia utente, che può essere eseguita solo sul thread dell'interfaccia utente.
Il corpo dell'espressione lambda è il codice che si desidera eseguire nel thread dell'interfaccia utente.
Quando il codice che aggiorna l'interfaccia utente viene eseguito da un thread diverso dal thread dell'interfaccia utente, si verifica un'eccezione di accesso cross-thread non valida.
Il dispatcher consente di passare del codice al thread dell'interfaccia utente da un altro thread.
Il progetto che ho inserito in questo post dimostra questo, tra gli altri concetti.
WebClient, HttpWebRequest and the UI Thread on Windows Phone 7
è necessario utilizzare Deployment.Current. Dispatcher in un'applicazione SilverLight quando ci si trova a lavorare in un thread di lavoro non dell'interfaccia utente (all'interno di un contesto che non eredita da DependencyObject) ed è necessario aggiornare l'interfaccia utente.
- 1. Qual è l'utilizzo di "~>" in cocoapods
- 2. Qual è il significato di <#= #>
- 3. Qual è lo scopo di "() =>"
- 4. Piano B, o qual è l'opposto di Maybe's >> =?
- 5. Qual è la differenza di reindirizzare un output usando ">", "&>", "> &" e "2 &>"?
- 6. Qual è la differenza tra ">" e "&>" in bash?
- 7. Qual è la differenza tra> = e =>?
- 8. Qual è la differenza tra operatore >> e operatore >>> in java?
- 9. Qual è operatore => in questo codice
- 10. Qual è il significato dell'operatore == <>?
- 11. Qual è l'operatore -> (stab) in Ruby?
- 12. In Javascript, qual è l'effetto di '>>> 0' su una variabile?
- 13. Qual è l'uso di <permission-group> in Android?
- 14. Qual è il nome di questo operatore =>?
- 15. Qual è l'etimologia di <*> da Applicativo in Haskell?
- 16. Qual è lo scopo di ANYSIZE_ARRAY in <winnt.h>?
- 17. Qual è il valore di default (IEnumerable <T>)?
- 18. Qual è il metodo opposto di Qualsiasi <T>
- 19. Qual è l'equivalente di Container.GetAllInstances <T> in NInject?
- 20. Qual è il significato di numeric_limits <double> :: digit10
- 21. Qual è il significato di>: Null <: in Scala?
- 22. Qual è la differenza tra `>>> some_object` e` >>> print some_object` nell'interprete Python?
- 23. Qual è l'uso di dire <? si estende SomeObject> invece di <SomeObject>
- 24. Qual è l'equivalente di C# dell'operatore di spostamento a destra non firmato di Java >>>
- 25. Qual è la differenza tra() -> Unità e (Unità) -> Tipi di unità?
- 26. qual è lo scopo di std :: set <VALUE, std :: owner_less <VALUE>>?
- 27. Qual è il punto dell'attributo "etichetta" <option> all'interno di <select>?
- 28. Qual è il corretto schema di gestione della memoria per il buffer-> CGImageRef-> UIImage?
- 29. PL/SQL Qual è il significato di <<word>>
- 30. Qual è il punto della collezione <?>
Jon, la popolarità dei tuoi post su SO è eccezionale. Il mio cappello è fuori per voi :) –
È anche importante ricordare che BeginInvoke può essere utilizzato dal thread stesso dell'interfaccia utente a un'azione successiva sul thread dell'interfaccia utente dopo che la coda di azione dell'interfaccia utente esistente è vuota. In sostanza, posticipare il lavoro fino a quando il thread dell'interfaccia utente non sta più facendo nulla. – JustinAngel
@JonSkeet: come posso eseguire un codice in un thread in background, poiché questo codice impedisce alla barra di avanzamento di mostrare sull'interfaccia utente – Rohaan