Я хотел бы запустить некоторый асинхронные рабочий процесс, а затем ждать его, чтобы закончить перед печатью некоторых результатов, например:Как ждать асинхронных закончить
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 программа выполняет несколько операций ввода-вывода, поэтому я хочу дождаться, пока самый медленный закончен, прежде чем продолжить.
Вы можете отслеживать, сколько из них завершено, и как только они будут завершены. Однако, вероятно, есть лучший подход, который я просто не могу придумать. –
Следите, как? – yanta
Не ждет асинк, чтобы закончить вид оксюморона? –