Как мне реализовать что-то вроде setTimeout JavaScript в C #? - PullRequest
4 голосов
/ 11 ноября 2010

У меня есть приложение C #, которое получает обновления с сервера, обрабатывает его и обновляет графический интерфейс. обновления приходят постоянно, скажем, несколько раз в секунду. Я хочу, чтобы приложение обновляло графический интерфейс максимум раз в 2 секунды. поэтому, если обновление приходит в момент времени T, я хочу, чтобы все обновления, поступающие с T через T + 2sec, оставались в буфере, а в момент времени T + 2sec выполнялись обработка и обновление GUI. Я знаю, что в JS вы можете использовать setTimeout () для выполнения некоторого кода в будущем, поэтому я хочу что-то подобное.

каков подходящий способ сделать это? Я слышал, что использование потоков для «планирования» вызова функции не очень хорошая идея, но я не уверен, что есть лучший способ сделать это. было бы так плохо использовать таймер с двухсекундным интервалом, синхронизированный с потоком графического интерфейса, который выполняет обработку / обновление?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2010

Вы можете использовать System.Windows.Forms.Timer.Он не запускает события в отдельном потоке, это поток GUI, который их запускает.Таким образом, вы можете обновить графический интерфейс напрямую, не используя Invoke.

0 голосов
/ 11 ноября 2010

Вы должны использовать один из классов таймеров, как вы разместили в своем вопросе.

См. эту статью MSDN, сравнивающую их - это должно дать вам хорошую основу для принятия решения.

...