Задать вопрос
mak_ufo
@mak_ufo

Почему не получается остановить анимацию?

Всем привет. Есть класс с двумя методами:

async public void DisplayAnimation(Canvas canvas)
{
     this.IsShowAnimation = true;
     while (this.IsShowAnimation)
     {
         this.Draw(this.Angle, StartPoint, canvas);
         await Task.Delay(20);
         canvas.Children.Clear();
         this.Angle += 3;
     }
}

public void StopAnimation(Canvas canvas)
{
     this.IsShowAnimation = false;
}


Если я где-то в коде вызываю DisplayAnimation(), то анимация начинает правильно работать. Но если я через какое-то время вызываю StopAnimation(), то почему-то она продолжает работать, хотя по моей логике она должна прекратиться. В чём может быть проблема?

Если что, то вот ссылка на исходный код

P. S. Все модификаторы доступа настроены правильно. Все обработчики правильно вызываются в коде
  • Вопрос задан
  • 182 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@kttotto
пофиг на чем писать
Дайте ссылку в исходном коде где именно код в том варианте, как привели. То, что я увидел в коде и в Вашем примере, это не одно и тоже. В исходнике запускается и останавливается таймер. Ваш пример вырван из контекста, поэтому по нему трудно что-то понять.

С гитхаба Ваш код себе не клонировал, но заметил, что ChebyshevMachine это структура, а не класс. Не знаю причины такого выбора, но могу предположить, что именно в этом может быть проблема. Поставьте брейкпоинт на методе StopAnimation и проверьте, что это тот же объект на котором Вы запустили таймер.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы