Ich bin neu in Xamarin, und versuche, eine einfache Android-App mit F # zu bauen. Ich versuche, Daten aus einer REST-API mit Async zu laden und dann anzuzeigen. Ich verstehe, dass die Interaktion mit der Benutzeroberfläche auf dem MainThread erfolgen muss, und dass es etwas in Richtung Activity.RunOnUiThread()
gibt. Ich habe folgendes versucht:Xamarin Android F # Update UI in async Block
let onSearch args =
let search = this.FindViewById<EditText>(Resource_Id.search)
let searchResults = this.FindViewById<TextView>(Resource_Id.searchResults)
button.Text <- search.Text
async {
let! results = recipeSearch.GetRecipes search.Text
searchResults.Text <- results
}
|> Async.Start
button.Click.Add onSearch
Das wirft die Ausnahme über die Interaktion mit den UI-Elementen in einem anderen Thread. Und dieses:
let result = async {
let! results = recipeSearch.GetRecipes search.Text
return results
}
|> Async.RunSynchronously
searchResults.Text <- result
dem Zweck es Async
Dank tun
Versuchen 'tun setzen! Async.SwitchToContext Application.SynchronizationContext in Ihrem asynchronen Block vor dem Update von 'searchResults.Text'. – ildjarn