Асинхронные рабочие процессы в F # - выполняются параллельно и не ждут результата - PullRequest
3 голосов
/ 14 декабря 2011

Можно ли использовать асинхронные рабочие процессы в F #, выполнять несколько асинхронных операций параллельно, но не ждать результата? Имеет ли это смысл? :)

Итак, вместо этого:

let runAll() =
    urlList
    |> Seq.map fetchAsync
    |> Async.Parallel 
    |> Async.RunSynchronously
    |> ignore

Сделайте что-то вроде этого:

let runAll() =
    urlList
    |> Seq.map fetchAsync
    |> Async.Parallel 
    |> ignore

Конечно, мне нужно запустить операцию, поэтому я попытался просто запустить выполнение асинхронной операции внутри функции fetchAsync, затем она работает, просто вызвав эту функцию:

let runAll() =
    urlList
    |> Seq.map fetchAsync
    |> ignore

Но тогда мой код больше не распараллеливается: /

Возможно, я упустил что-то очевидное.

Спасибо за помощь!

1 Ответ

1 голос
/ 14 декабря 2011

Насколько я понимаю, вы хотите запустить целый стек асинхронных операций, а затем сделать что-то еще, не дожидаясь их завершения.В этом случае вы хотите использовать Async.Start так:

let runAll() =
    urlList
    |> List.map Async.Start
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...