次の定義を検討してください
let test =
Async.FromContinuations(
fun (cont,econt,ccont) ->
let rec inner () =
async {
do printfn "looping..."
do! Async.Sleep 1000
return! inner ()
}
Async.Start(inner ())
cont ())
そのように計算を試したいとします
let cts = new CancellationTokenSource ()
Async.Start(test, cts.Token)
cts.Cancel()
適切なキャンセル トークンを渡していないため、当然、内側のループは停止しません。Async.FromContinuations を通じて外部キャンセル トークンを取得する方法はありますか? async ビルダーと Async.CancellationToken を使用してこれを書き直すことはできますが、そうすると内部式に継続を渡すことができなくなります。