我可以明确检查取消/终止异步计算吗?

时间:2013-09-07 18:45:22

标签: asynchronous f#

我有一个如下所示的异步计算(参见内联注释):

async {
  //...
  do! Async.Sleep(100) //cancellation may happen during sleep
  //... but isn't checked at the end of the sleep, so regular, non-async computations are executed here 
}

为了在达到“常规”计算部分之前强制取消检查/终止整个异步计算,我在do! Async.Sleep(1)之后立即插入有效的无操作do! Async.Sleep(100)。有更清洁的方法吗?甚至可能是do! Async.Nop

1 个答案:

答案 0 :(得分:5)

这样的事情怎么样:

let nop = async.Return ()

然后你就可以使用它:

async {
    // ...
    do! Async.Sleep 100
    do! nop
}