【发布时间】:2019-05-24 19:04:42
【问题描述】:
在 F# async 工作流中,我们可以使用 use 关键字定义应清理的资源。
但是use 与return 是如何交互的呢?
例如,给定以下代码:
let createResource = async {
use r = Resource ()
do! operationThatMightThrow r
return r
}
async {
use! r = createResource
printfn "%O" r
}
|> Async.RunSynchronously
Resource.Dispose 的调用会发生在哪里?
我该如何设计,以便始终清理 r(即使 operationThatMightThrow 抛出)?
【问题讨论】:
标签: asynchronous f# disposable