Sto lavorando a un'applicazione Windows 8 utilizzando C#/XAML. Tutto ha funzionato, tranne questo gestore di eventi, dove ho ricevuto il seguente errore su questa riga.Applicazione Windows 8 L'applicazione ha chiamato un'interfaccia che è stata sottoposta a marshalling per un thread diverso
await RefreshUserInfoAsync();
L'applicazione chiamati un'interfaccia che è stato marshalling per un thread differente. (Eccezione da HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))
Questa raccolta osservabile viene aggiornata da un gestore di notifiche push nella classe dell'app e questo gestore di eventi è nel mio modello di vista. Non sto usando alcun framework come MVVM Light. Ho esaminato alcuni degli altri post su questo e ho provato a creare il mio Dispatcher Helper, ma ho ricevuto un errore diverso in cui Window.Current.Dispatcher è nullo. Qualche idea su come farlo funzionare?
sottolineato testo
private async void PushActions_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { string action = e.NewItems[0] as string; if(action != null) { await RefreshUserInfoAsync(); } } private async Task RefreshUserInfoAsync() { var userInfos = await SessionRepository.GetSessionUsersWithInfoAsync(SessionGuid, RoundGuid); this.UserInfoList = new ObservableCollection<UserInfo>(userInfos); }
Non funziona per me. VS non riconosce l'attesa per qualche motivo. Sto sviluppando per MS Surface con Windows 8 SDK. – Howie
La firma del metodo ha asincrono? async pubblico Attività GetCustomersAsync(). Se lo fa, che struttura stai usando? 4.5? Se è in un PCL e hai scelto qualcosa di inferiore a Win8, potrebbe tornare a 4.0. Penso che ci sia un pacchetto nugget per aggiungere async/await alle librerie 4.0. –
MikeDouglasDev
Ha funzionato come un fascino, grazie mille! – cesarferreira