我想運行一些異步工作流程,然後等待它打印一些結果之前完成,例如:如何等待異步完成
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