У меня есть библиотека классов на C ++ / Cli с классом Entity
.Позиции сущностей можно изменить с помощью Jump(destination)
(внутри класса сущностей).
Помимо немедленного изменения позиции с помощью Jump(destination)
Мне нужно реализовать движения с помощью Move(destination)
.Все точки Движения хранятся в Trajectory
-классе, и в настоящее время я реализую Движение в виде серии Прыжков к этим точкам с определенной задержкой:
for(int i = 0; i < trajectory->NumberOfSteps; i++)
{
// perform one step
destination = trajectory->Steps[i];
receivingEntity->Jump(destination);
// wait
System::Threading::Thread::Sleep(timePerStep));
}
Я звоню Move()
изприложение Windows Forms C #.Моя текущая реализация, очевидно, позволяет моему пользовательскому интерфейсу (который находится в том же потоке) зависать во время выполнения Motion.
Я ищу способ реагировать на мой пользовательский интерфейс во время Движения, чтобы можно было выполнять такие действия, как нажатие кнопки отмены, чтобы остановить движение.У меня была идея сделать что-то вроде «после каждого шага отвечать на любое событие в очереди событий (например, CancelButtonClicked)».Но как мне сделать это в .net?
for(int i = 0; i < trajectory->NumberOfSteps; i++)
{
// perform one step
destination = trajectory->Steps[i];
receivingEntity->Jump(destination);
ProcessEventQueue() // How can I do this?
// wait
System::Threading::Thread::Sleep(timePerStep));
}
Любое решение для моей идеи или лучшие идеи?
Я понимаю, что могу сделать это с другой веткой, но, если возможно, я быхотел бы избежать этого.
наилучшими пожеланиями richn