終了時にクリーンアップしたいリソースを利用する単純なシーケンス式があります。
type MyObject() =
member this.Items =
seq {
use resource = ResourcePool.Get()
let c = resource.ValueCount
if c > 0 then
for i in 0 .. c - 1 do
yield resource.GetValue i
}
次に、シーケンスを使用して反復する場合、たとえばアイテムの途中で、リソースはいつ破棄されますか?
例えば:
// ...
let foo = MyObject
let item = foo.Items |> Seq.find ( fun i -> i.Name = "name" )
// ...
Seq.findresource
の終了後に破棄されますか? それとも、リソース管理戦略を再考する必要がありますか?