Таймер остановки в замыканиях с помощью F # - PullRequest
0 голосов
/ 23 сентября 2010

Я хочу задать простой вопрос, как остановить этот таймер.Чей-то код такой:


    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 Ответ

4 голосов
/ 23 сентября 2010

Есть ли причина, чтобы сделать таймер изменяемым?Если вы никогда не назначаете ему новое значение, вы можете просто удалить 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())
...