Применительно к этой программируемой игре Я сейчас строю.
У меня есть библиотека классов (dll), которая будет иметь метод Run
, который будет состоять из чего-то вроде:
public class MyRobot : Robot
{
public void Run(}
{
while (true)
{
Ahead(200); //moves the bot 200pixels
TurnLeft(90); //turns the bot by 90deg
}
}
}
В этих методах (унаследованных от Robot
) система будет анимировать робота с помощью WPF (используя BeginAnimation
или DispatcherTimer
).
Теперь проблема в том, что я не могу вернуть метод (т. Е. Перейти к следующему методу) перед завершением текущего, потому что это приведет к тому, что анимация будет происходить вместе и в бесконечном цикле. (как показано выше), это особенно не хорошо.
У меня такой вопрос, как лучше всего предотвратить возврат метода до завершения анимации ?
В настоящее время у меня есть bool
в классе Robot
(isActionRunning
), который помечается как true
, когда начинается действие, а затем изменяется на false
в обратном вызове анимации (с использованием Completed
событие при использовании BeginAnimation
).
В конце каждого метода (после вызова BeginAnimation
) я поместил следующий цикл:
while (isActionRunning)
{
Thread.Sleep(200); //so that the thread sleeps for 200ms and then checks again if the animation is still running
}
Это значит, что метод не вернется до завершения анимации.
Но я чувствую, что это неправильный способ сделать это.
Кто-нибудь может подсказать мне, как лучше всего этого добиться?