我想阻止异步执行,直到用户按下控制台中的任何键为止。
这是我想出的:
let waitForAnyKey = async {
do!
new Task (fun () ->
printfn "%s" "waiting for a key"
Console.ReadKey () |> ignore
printfn "%s" "got a key"
)
|> Async.AwaitTask
}
像这样使用:
async {
printfn "%s" "Press any key... "
do! waitForAnyKey
printfn "%s" "You pressed a key. "
}
但是,Task
从未运行。
Task
吗?答案 0 :(得分:2)
没有任务,带有Salary
Async.FromContinuations
答案 1 :(得分:1)
您可以在没有任务<->异步互操作位的情况下写waitForAnyKey
:
let waitForAnyKey = async {
do Console.ReadKey () |> ignore
}
然后您可以随时等待输入来调用它。您的用法示例将在此实现中正常工作。
答案 2 :(得分:0)
Nativescript
构造函数会创建一个新Task,但不会启动它。改用Task.Run应该可以解决问题:
Task
Console.ReadKey当前不具有返回Task的等效项(这使我感到惊讶),尽管这个想法has been suggested.