ifecdr Ответов: 0

Проблема времени выполнения с асинхронными вычислениями в F#


У меня возникла проблема с кодом, написанным на языке F# для приложения xamarin forms. Я добавил мобильную службу azure в свое приложение в качестве бэкэнда, а также включил функцию автономной синхронизации. Я могу добавлять записи в бэкэнд, но у меня есть огромная проблема с загрузкой данных из бэкэнда

когда я запускаю приложение и вызывается метод GetTable, приложение останавливается на третьей строке метода. Ничто другое не работает дальше этой точки. Это больше похоже на мертвый бассейн. я думаю, что это ошибка во время выполнения. Любая помощь в этом будет оценена по достоинству....... Примечание: создается экземпляр класса Backend, и метод Initialize вызывается до вызова метода GetTable......

Что я уже пробовал:

type Backend() =
    let client = new MobileServiceClient("link to the azure table here")
    let mutable table = Unchecked.defaultof<IMobileServiceSyncTable<Items>>
member x.Initialize()=
    let path = Path.Combine(MobileServiceClient.DefaultDatabasePath,"local.db")
    let localstore = new MobileServiceSQLiteStore(path)
    do localstore.DefineTable<Items>()
    do client.SyncContext.InitializeAsync(localstore) |>Async.AwaitTask|>ignore
    do table <- client.GetSyncTable<Items>()
member x.SyncTable()
    async {
       do client.SyncContext.PushAsync() |> Async.AwaitTask |> Async.ignore
       do table.PullAsync("query", table.CreateQuery()) |> Async.AwaitTask |> ignore
    }
member x.GetTable() =
    async {
       do x.SyncTable() |> Async.RunSynchronously()
       let! result = table.ToEnumerable() |> Async.AwaitTask // the application freezes at this point.
       return new ObservableCollection<Item>(result)
    }

0 Ответов