我想运行一些异步工作流程,然后等待它打印一些结果之前完成,例如:如何等待异步完成
let dowork n =
async {
do printfn "work %d" n
}
let creatework() =
async {
for x in [1..5] do
Async.Start(dowork x)
}
Async.RunSynchronously(creatework())
printfn "finished"
当我运行这一点,我希望所有的DoWork的调用在打印完成之前完成。但是我得到的结果是这样的:
工件2 工件3 工作4 工作5 完成 工件1
我试图除去creatework异步(),但“成品”是异步工作流程之前打印正在运行。
在真正的dowork中,程序执行一些IO操作,所以我想在继续之前等待最慢的一个完成。
您可以跟踪完成的数量以及完成打印完成后的数量。不过,可能有更好的方法,我不能拿出它的atm。 – 2010-11-05 14:35:37
跟踪如何? – yanta 2010-11-05 14:43:30
是不是在等异步完成一个矛盾的排序? – 2010-11-05 15:08:10