Using a bit of a misleading nomenclature, one of the constructors for TimeSpan uses ‘Ticks’ to initialize the object.
I have been using Environment.TickCount for eons, it seems, where 1000 ‘ticks’ equals one second. Because of some of the processing I’m doing right now, I decided to use DispatchTimer to simplify pushing info back to the UI thread from background data refreshes.
Here’s some code that looks innocent enough:
_dispatchTimer.Interval = new TimeSpan(3000);
_dispatchTimer.Tick += new EventHandler(dispatcherTimer_Tick);
_dispatchTimer.IsEnabled = true;
Unfortunately, when run, the timer is firing (or at least trying to) approximately every 1ms. Which…is about as fast as it’ll go. In fact, I was getting 12-16 lines of output in my logger from the tick event firing about every 11ms. Oops.
Now, had I read the tooltip from the constructor or otherwise checked the doc’s, I would have seen that TimeSpan actually accepts ticks as 100 nanoseconds.
So, in passing in 3000 as the parameter for the constructor I was actually telling it to tick every 0.000003 seconds. Nice.
Ahem. That should read:
_dispatchTimer.Interval = new TimeSpan(30000000);
…if you don’t want your UI wiggin’ out.
No comments:
Post a Comment