У меня есть довольно простой код, который пытается переместить пользовательский индикатор выполнения. Вот XAML:
<!-- Progress display -->
<uControl:ProgressDisplayPie
x:Name="soakProgressDisp"
Canvas.Left="357" Canvas.Top="29"
ProgressValue="0" Height="198" />
В ответ на нажатие кнопки индикатор выполнения скользит по:
private void sauceApplied_Click(object sender, RoutedEventArgs e)
{
// Beep beep
soundPlayer.SoundLocation = "Resources/Audio/1-first.wav";
soundPlayer.Play();
// Move the progress display
DoubleAnimation moveAnimation = new DoubleAnimation();
moveAnimation.To = 460;
moveAnimation.Duration = TimeSpan.FromMilliseconds(1000);
moveAnimation.AccelerationRatio = 1.0;
soakProgressDisp.BeginAnimation(Canvas.LeftProperty, moveAnimation);
}
Это работает каждый раз на моем ПК. Однако при запуске на небольшом панельном ПК анимация иногда не происходит. Индикатор выполнения просто остается на месте. Я проверил, генерируются ли какие-либо исключения, но все выполняется чисто.
Панельный ПК имеет самую последнюю версию .NET и, опять же, иногда оживляет. Любые идеи, что бы предотвратить анимацию каждый раз?
UPDATE
Оказывается, анимация всегда будет , в конце концов будет работать. Обычно я просто закрываю приложение, если анимация не запускается, но сейчас я замечаю, что анимация в конечном итоге запустится, если я оставлю ее в покое. Так что на самом деле есть два режима:
- Анимация начинается и запускается сразу же, как и предполагалось
- Начало анимации задерживается на некоторое время. Я видел, что это задерживается от нескольких секунд до 1 минуты!