使用F#在闭包中停止计时器

时间:2010-09-23 02:19:10

标签: f# timer closures

我想问一个简单的问题,如何停止这个计时器 有人的代码是这样的:


    let mutable timer = new DispatcherTimer()
    timer.Interval - new TimeSpan(0,0,0,0,100)
    timer.Start()

我想添加一个功能,只要我点击按钮
就会使计时器停止 所以我把这样的代码(我真的没有线索):


btnStop.Click
        |> Event.add(fun args -> timer.Stop())

但它表示关闭不能捕获 任何想法如何做到这一点?
抱歉。我不是一个经验丰富的功能程序员。我只是想修改代码。

1 个答案:

答案 0 :(得分:4)

是否有理由让计时器变得可变?如果您从未为其分配新值,那么您可以放弃mutable,它应该可以正常工作。

否则,您将需要使用引用单元格而不是正常的可变绑定:

let timer = ref (new DispatcherTimer())
(!timer).Interval <- new TimeSpan(0,0,0,0,100)
(!timer).Start()

btnStop.Click
    |> Event.add(fun args -> (!timer).Stop())