@Wolfak

Как работает Timer в WPF?

Добрый вечер.
Не могу разобраться с таймером в Visual Studio C# для Windows RT.
Необходимо написать функцию, которая бы запускалась каждые 0.5 секунды и передвигала объект на 1 шаг. ( x++;).
Как реализовать подобный таймер?
  • Вопрос задан
  • 19098 просмотров
Решения вопроса 1
Terminaft
@Terminaft
В WPF, судя по тому что я читал, лучше использовать DispatcherTimer (пространство имен System.Threading).

Грубо говоря,
private DispatcherTimer timer = null;
private int x;

private void timerStart () {
            timer = new DispatcherTimer();  // если надо, то в скобках указываем приоритет, например DispatcherPriority.Render
            timer.Tick += new EventHandler(timerTick);
            timer.Interval = new TimeSpan(0, 0, 0, 0, 500);
            timer.Start();
}

private void timerTick(object sender, EventArgs e)
{
            x++;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
FirstX
@FirstX
.net developer
Для общей справки в дополнение к первому ответу, есть грубо говоря 2 основных разновидности таймеров:

1. System.Threading.Timer - Ставит задачу в пул потоков, поэтому подходит для тех, случаев, когда задача выполняется по таймеру в фоновом режиме. Например ваш объект изменяет параметр Х, но на форме этого не видно.

2. System.Windows.Forms.Timer (для WinForms) / System.Windows.Threading.DispatcherTimer (WPF и Silvelight) и System.UI.XAML.DispatcherTimer для приложений Win Store еще есть - это все аналоги, которые вызывают исполнение метода в том же потоке, что и был вызван. Благодаря этому, обеспечивается доступ к элементам графического интерфейса, но при этом сюда лучше не помещать сложную вычислительную логику
Ответ написан
Комментировать
@Nubzilo
Изучаю C#
Подниму старую тему, что б не создавать новую.
Если в WPF должен вызываться какой то метод работающий с сетью (вычислительная логика не большая, но длительная), после своей работы он должен изменить элемент интерфейса. Какой класс таймеров лучше использовать?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы