2010-09-23 2 views
0

Je souhaite poser une question simple sur la façon d'arrêter cette minuterie.
code Quelqu'un est comme ceci:
Arrêter la minuterie dans les fermetures à l'aide de F #


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

et je veux ajouter une fonction qui provoque la minuterie pour arrêter chaque fois que je clique sur le bouton
Je mis un code comme ceci (je n'ai pas vraiment un indice):


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

mais il dit qu'il ne peut pas être capturé par la fermeture
toute idée comment faire cela?
désolé. Je ne suis pas un programmeur fonctionnel expérimenté. Je veux juste modifier un code.

+5

Astuce: 'mot-clé mutable' est pas nécessaire pour vos utilisations, retirez-le :) – Juliet

Répondre

4

Y a-t-il une raison de rendre le minuteur mutable? Si vous ne lui attribuez jamais une nouvelle valeur, vous pouvez simplement laisser tomber mutable et cela devrait fonctionner.

Sinon, vous aurez besoin d'utiliser une cellule de référence au lieu d'une liaison normale 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()) 
Questions connexes