【问题标题】:Can I explicitly check for cancellation / terminate async computation?我可以明确检查取消/终止异步计算吗?
【发布时间】:2013-09-08 04:17:49
【问题描述】:

我有一个如下所示的异步计算(请参阅内联 cmets):

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(100) 之后立即插入一个有效的无操作do! Async.Sleep(1)。有没有更清洁的方法来做到这一点?甚至可能是do! Async.Nop

【问题讨论】:

    标签: asynchronous f#


    【解决方案1】:

    这样的事情怎么样:

    let nop = async.Return ()
    

    然后你可以像这样使用它:

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

    【讨论】:

      猜你喜欢
      • 2015-06-02
      • 1970-01-01
      • 2023-03-03
      • 2013-08-07
      • 1970-01-01
      • 2012-06-10
      • 2013-11-17
      • 1970-01-01
      • 2016-02-02
      相关资源
      最近更新 更多