Discussion Timers in Silverlight or Javascript?

  • Friday, August 24, 2007 5:48 PM
     
     

    So I found that you could create an empty Storyboard, set the duration and by adding a "Completed" delegate, you can do something then restart then storyboard.

    But this feels like it's almost identical to SetTimeout.  Any reason to choose one over the other?  I suspect the storyboard may be less performant, merely because it is new, but I could be wrong??

     Thoughts??

     Dave

All Replies

  • Friday, August 24, 2007 5:50 PM
     
     

    In 1.1 currently, the only way to do timers is with a storyboard, so that's why you see that method frequently. As for which is better in 1.0 I don't really know.

  • Friday, August 24, 2007 6:12 PM
     
     

    I thought people used a HMLTimer in 1.1??  I haven't done too much 1.1, but I'm sure thats in there ?

  • Friday, August 24, 2007 6:16 PM
     
     

    This is reason enough for me to use the storyboard method.  I think I read somewhere that the HtmlTimer is going to be replaced somewhere down the line.

  • Friday, August 24, 2007 6:28 PM
     
     

    Maybe that was it...I know there was a reason why they said to use storyboards in 1.1...

  • Tuesday, August 28, 2007 7:02 AM
     
     

    THis shows a workaround by using an Animation Timer:

    First set up an Animation Timer in your xaml...

    <Canvas.Resources>
      <
    Storyboard x:Name="timer">
        <
    DoubleAnimation Duration="00:00:0.02" />
      </
    Storyboard>
    </
    Canvas.Resources>

    Then you can add an "tick" event handler and start up the timer..

    timer.Completed += new EventHandler(timer_Completed);
    timer.Begin();

    And finally, make sure you restart the timer in the timer_Completed event.

    void timer_Completed(object sender, EventArgs e)
    {
       // ... do per tick stuff here...

       // restart the timer
      
    timer.Begin();
    }

  • Tuesday, August 28, 2007 10:18 AM
     
     

    And finally, make sure you restart the timer in the timer_Completed event.

    Actually, it's probably better design to set the RepeatBehavior of the Storyboard to "Forever".  That will probably be a more accurate Timer than restarting it in the Completed event.  Then, if you choose, you can Stop() the Storyboard, in the Completed event, based on some piece of data.

  • Tuesday, August 28, 2007 10:30 AM
     
     

    Oh I wasn't aware that the Completed event still fires if the RepeatBehavior is forever. I'l have to try this.