How to wait for async to finish
asynchronous, f#
Solution
Well answering my own question seems lame, but this seems to work. Someone come up with something better so I can award them the answer :)
let dowork n =
async {
do printfn "work %d" n
}
let creatework() =
[1..5] |> Seq.map dowork |> Async.Parallel |> Async.RunSynchronously
creatework()
printfn "finished"
It gives various output, but "finished" so far is always last...
Problem
I would like to run some async workflow, then wait for it to finish before printing some results, example: ``` 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" ``` when I run this, I want all the dowork calls to finish before printing "finished". However I get results like this: work 2 work 3 work 4 work 5 finished work 1 I have tried removing async from creatework() but "finished" is printed before the async workflows are run. In the real dowork, the program performs some IO, so I want to wait for the slowest one to finish before continuing.