下面是一个解决方法的示例代码:
open System
open System.Threading.Tasks
open System.Threading
let runParallel () =
let tasks = [|
Task.Run(fun () -> async {
printfn "Task 1 started"
do! Async.Sleep(1000)
printfn "Task 1 completed"
} |> Async.Ignore)
Task.Run(fun () -> async {
printfn "Task 2 started"
do! Async.Sleep(2000)
printfn "Task 2 completed"
} |> Async.Ignore)
Task.Run(fun () -> async {
printfn "Task 3 started"
do! Async.Sleep(1500)
printfn "Task 3 completed"
} |> Async.Ignore)
|]
Task.WhenAll(tasks).Wait()
runParallel()
这段代码使用了F#的Task.Run
函数创建了三个异步任务,并将它们添加到一个任务数组中。然后使用Task.WhenAll
函数等待所有任务完成。通过在每个任务的异步工作中添加适当的延迟和打印语句,可以看到任务是并行执行的。
请注意,这里没有使用Async.Parallel
函数,因为它是在F#的async
计算表达式中使用的。而在这个例子中,我们使用了C#的Task
和Task.Run
来达到类似的效果。