Tôi mới dùng Xamarin và đang cố gắng xây dựng một ứng dụng Android đơn giản với F #. Tôi đang cố gắng tải dữ liệu từ một API REST với async, và sau đó hiển thị nó. Tôi hiểu rằng việc tương tác với giao diện người dùng phải được thực hiện trên MainThread và có điều gì đó nằm dọc theo các dòng Activity.RunOnUiThread()
. Tôi đã thử các cách sau:Xamarin Android F # cập nhật giao diện người dùng trong khối không đồng bộ
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
Điều này sẽ loại trừ Ngoại lệ về tương tác với các thành phần giao diện người dùng trong một chuỗi khác. Và đây:
let result = async {
let! results = recipeSearch.GetRecipes search.Text
return results
}
|> Async.RunSynchronously
searchResults.Text <- result
Thất bại mục đích làm việc đó Async
Cảm ơn
Hãy thử đặt 'làm! Async.SwitchToContext Application.SynchronizationContext' trong khối async của bạn trước khi cập nhật 'searchResults.Text'. – ildjarn