еще?
//some UI framework method with unit -> unit
override x.ViewDidLoad() =
let testAsync = async{
return! someLongRunningWork
}
let result = Async.Start testAsync //returns immediately
UIControl.DoSomething(result)
по доке Async.Start - Do not await its result. А мне наоборот нужен результат, да и еще правильный поток(контекст) после исполнения асинка. Если код с измененем юая перенести в асинк блок - то он, если я правильно понимаю, будет выполнен на бекграунд потоке, что не даст мне изменить юай. Как добиться исплнения асинка с получением результата и с правильным переключением контекстов?
Сделай все внутри асинк блока
let context = Threading.SynchronizationContext.Current async { do! Async.SwitchToThreadPool() //do something do! Async.SwitchToContext context //ui } наверно как-то так.
Обсуждают сегодня