2011-01-10 4 views
1

Я использую timers.timer для запуска события каждые 5 секунд. Я заметил, что через некоторое время он стреляет каждые 6 секунд. Есть много других потоков, работающих параллельно. Событие timers.timer будет сгенерировано с использованием threadpool. Дрейф происходит из-за других потоков, выполняющих параллели. Это верно? мое приложение - приложение wpf. Я не могу использовать диспетчерский таймер, так как это может повлиять на пользовательский интерфейс.timers.timer не стреляет точно

Я хочу запустить событие таймера каждые 5 секунд, не обращая внимания на потоки и не влияя на пользовательский интерфейс. Что такое solutios/лучшие подходы.

+1

из 21 вопросов, вы задавали на StackOverflow вы только приняли 6 ответов, были и другие ответы так плохо? –

+0

О, боже, вам действительно нужно принять некоторые ответы, чтобы соблазнить людей давать больше ответов ... Каждый хочет получить кредит за свои усилия. Вот почему этот сайт существует .. Он не Ask.com –

+0

извините, ребята ... я не заметил ответов. я сделаю это сразу – user209293

ответ

1

Я не уверен, почему это происходит, но timer.timer не является для этой цели. если у вас будет много одновременно работающих таймеров в разных потоках, тогда рассмотрите использование System.Threading.Timer.

System.Threading.Timer - простой, легкий таймер, который использует методы обратного вызова и обслуживается потоками пула потоков. Он не рекомендуется использовать с Windows Forms, поскольку его обратные вызовы не встречаются в потоке пользовательского интерфейса. System.Windows.Forms.Timer - лучший выбор для использования с Windows Forms. Для серверной функции таймера вы можете использовать System.Timers.Timer, который повышает события и имеет дополнительные функции. посмотреть на

http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx

+0

System.Threading.Timer - лучшее решение для проектов типа сервера, но у него есть одна и та же проблема. Он по-прежнему находится на потоках из threadpool и поэтому нельзя полагаться на огонь с какой-либо точностью. – jercra

+0

Хорошо для этого сравнения я бы хотел, чтобы вы посмотрели http://msdn.microsoft.com/en-us/magazine/cc164015.aspx –