Я пытаюсь сделать System.Windows.Shapes.Rectangle вращение по оси Y, имитирующую вращение карты, показывая весь маршрут.UI refresh looping a Dispatcher.BeginInvoke
Проблема в том, что пользовательский интерфейс обновляется только в конце.
Упрощенная версия кода
Вызов метода
for (i=0; i<=180; i++)
{
int j = i;
Dispatcher.BeginInvoke(new a_dispatcher(() => {
print_animation_of_card(card, i);
}),
null);
}
Метод
private void print_animation_of_card(System.Windows.Shapes.Rectangle card)
{
...
System.Windows.Media.PlaneProjection p =
card.Projection as System.Windows.Media.PlaneProjection;
p.RotationY = i;
card.Projection = p;
}
Я также попытался поставить FOR в метод, с таким же результат ...
Как мне сделать, чтобы показать все вращение системы.Windows.Shapes.Rectangle?
Я работаю с Silverlight, так Invoke() метод не доступен ... Я пытался ставить петлю внутри Dispatcher.BeginInvoke(), но без результата, я заставил его работать, поставив Dispatcher.BeginInvoke() в Backgroundworker, но я бы предпочел, чтобы он работал без многопоточности ... –
@Korbert. Если вы не используете «BackgroundWorker», то зачем использовать 'Dispatcher.BeginInvoke()' вообще? Вы должны иметь возможность напрямую манипулировать картой «Прямоугольник». – Jay
Да, но я хочу показать пользователю анимацию вращения Rectangle. Если я делаю это нормально без диспетчера, я вижу только конечную позицию. Я думал, что смогу показать все движения Dispatcher.BeginInvoke(), я ошибаюсь? –