Si noti che non solo è stata modificata l'API (adottando l'API dalle app di WindowsStore), ma anche il modo in cui è stato ottenuto il Dispatcher in WindowsPhone 8.0 è cambiato.
@Johan Il suggerimento di Faulk, sebbene funzionerà, può restituire nulla in una moltitudine di condizioni.
Vecchio codice per afferrare il dispatcher:
var dispatcher = Deployment.Current.Dispatcher;
or
Deployment.Current.Dispatcher.BeginInvoke(()=>{
// any code to modify UI or UI bound elements goes here
});
nuovo in Windows 8.1 distribuzione non è un oggetto o di spazio dei nomi disponibili.
Al fine di assicurarsi che si ottiene il dispatcher thread principale dell'interfaccia utente, utilizzare il seguente:
var dispatcher = CoreApplication.MainView.CoreWindow.Dispatcher;
or
CoreApplication.MainWindow.CoreWindow.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
()=>{
// UI code goes here
});
Inoltre, anche se il metodo dice che sarà eseguito Async la parola attendono non possono essere utilizzati nel metodo invocato da RunAsync. (nell'esempio precedente il metodo è anonimo).
Per eseguire un metodo attendibile all'interno del metodo anonimo sopra, decorare il metodo anonimo all'interno di RunAsync() con la parola chiave async.
CoreApplication.MainWindow.CoreWindow.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
**async**()=>{
// UI code goes here
var response = **await** LongRunningMethodAsync();
});
fonte
2014-06-25 18:34:36
grazie, funziona – IloveIniesta