2010-03-09 2 views
2

Я разрабатываю приложение Silverlight с пользовательскими анимациями. Я хочу обновить переменную animationCounter каждые 1 milissecond, так что за одну секунду значение равно 1000. Я пробовал DispatcherTimer и System.Threading.Timer. таким образом:Проблема с таймером Silverlight

DispatcherTimer timer = new DispatcherTimer(); (...) 
timer.Interval = new TimeSpan(0, 0, 0, 0, 1); 
timer.Tick += new EventHandler(timer_Tick); (...) 

(...)

void timer_Tick(object sender, EventArgs e) 
{ 
     animationCounter++; 
     Dispatcher.BeginInvoke(() => txtAnimationCounter.Text = animationCounter.ToString()); 
} 

с System.Threading.Timer

System.Threading timer = null; 
timer = new System.Threading.Timer(UpdateAnimationCounter, 0, 1); 

void UpdateAnimationCounter(object state) 
{ 
       animationCounter++; 
     Dispatcher.BeginInvoke(() => txtAnimationCounter.Text = animationCounter.ToString()); 
} 

Оба они устанавливают AnimationCounter около 100 в одну секунду. Должно быть 1000. Я не знаю, почему. Я чего-то не хватает.

Благодаря

ответ

3

документации следует указать, что таймеры не имеют разрешение 1мс, но 10ms минимум;) Это не делает tseem к. Во всяком случае, минимальное разрешение таймера составляет около 10 мс ... так что это самый маленький интервал, который они срабатывают.

Почему, черт возьми, вам все равно 1ms? Звучит бесполезно для меня. Анимация должна быть в порядке с 25 - 60 обновлениями в секунду - остальное глаз не может видеть в любом случае.

+0

Я также не нашел документацию с разрешением 10 мс, но некоторые другие сайты намекали на нее. –

+0

Спасибо. Я этого не знал. Да, я думаю, что разрешение 10 мс должно быть в порядке. Мне нужно это значение, чтобы запустить какое-то событие анимации при синхронизации. – jose

Смежные вопросы