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.
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 🙂
It gives various output, but “finished” so far is always last…