Я хотел бы запустить некоторый асинхронный рабочий процесс, затем дождаться его завершения, прежде чем выводить некоторые результаты, например:
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 (), но «готово» печатается до запуска асинхронных рабочих процессов.
В реальном режиме программа выполняет некоторые операции ввода-вывода, поэтому я хочу дождаться завершения самого медленного, прежде чем продолжить.