从文档中可以看出Async.RunSynchronously运行异步计算并等待其结果.我也读到它与C#中的等待类似.我很好奇,如果它阻止线程直到它运行完成?
Tom*_*cek 11
是的,Async.RunSynchronously块.一个简单的例子:
let work = async {
printfn "Async starting"
do! Async.Sleep(1000)
printfn "Async done" }
printfn "Main starting"
work |> Async.RunSynchronously
printfn "Main done"
Run Code Online (Sandbox Code Playgroud)
这将打印:
Main starting
Async starting
Async done
Main done
Run Code Online (Sandbox Code Playgroud)
它大致类似于task.RunSynchronouslyC# - 尽管可能存在一些细微差别(F#工作流将使用线程池执行,而主线程被阻塞并等待完成,而C#等效可能实际上在当前线程上运行工作这更类似于StartImmediateF# - 然而它不等待).