Mr. Lolman
2015-07-14, 13:32:43
Hi, ich hab folgendes Problem
In einem WPF Programm soll nach einer bestimmten Zeit eine Animation ausgeführt werden. Aktuell ists folgendermaßen implementiert.
ShowAnimation();
Action Deleg = new Action(() =>
{
Stopwatch sw = new Stopwatch();
sw.Restart();
while (sw.ElapsedMilliseconds <= Infoduration) System.Threading.Thread.Sleep(100);
});
Deleg.BeginInvoke(new AsyncCallback(HideAnimation),Deleg);
Das Problem bei der Implementation ist offenbar, dass HideAnimation nicht im UI-Thread läuft, sondern in einem eigenen. Außerdem sollen die Animationen in ShowAnimation diejenigen von HideAnimation übersteuern können.
Optimaler Ablauf:
1. Kunde klickt irgendwo
2. ShowAnimation kommt
3. Wartezeit
4. Hideanimation kommt
Problem: Der Kunde soll auch während den Schritten 2. 3. 4. klicken können und den Ablauf somit wieder von vorne starten.
Wenn nun die Hideanimation (deren Methode zwar in einem eigenen Thread läuft, aber mit Dispatcher.Invoke sich in den UI-Thread klinkt), gerade läuft entsteht ein Pallawatsch in Form dessen, dass die Hideanimation (=ausblenden) läuft und sich mit der Showanimation (=einfliegen) überlagert.
Nun müsst ich theoretisch einfach alle laufenden Animationen beim Aufruf von Showanimation stoppen (Label.BeginAnimation(UIElement.OpacityProperty, null); )
praktisch klappt das aber aus irgendeinem Grund nicht.
In einem WPF Programm soll nach einer bestimmten Zeit eine Animation ausgeführt werden. Aktuell ists folgendermaßen implementiert.
ShowAnimation();
Action Deleg = new Action(() =>
{
Stopwatch sw = new Stopwatch();
sw.Restart();
while (sw.ElapsedMilliseconds <= Infoduration) System.Threading.Thread.Sleep(100);
});
Deleg.BeginInvoke(new AsyncCallback(HideAnimation),Deleg);
Das Problem bei der Implementation ist offenbar, dass HideAnimation nicht im UI-Thread läuft, sondern in einem eigenen. Außerdem sollen die Animationen in ShowAnimation diejenigen von HideAnimation übersteuern können.
Optimaler Ablauf:
1. Kunde klickt irgendwo
2. ShowAnimation kommt
3. Wartezeit
4. Hideanimation kommt
Problem: Der Kunde soll auch während den Schritten 2. 3. 4. klicken können und den Ablauf somit wieder von vorne starten.
Wenn nun die Hideanimation (deren Methode zwar in einem eigenen Thread läuft, aber mit Dispatcher.Invoke sich in den UI-Thread klinkt), gerade läuft entsteht ein Pallawatsch in Form dessen, dass die Hideanimation (=ausblenden) läuft und sich mit der Showanimation (=einfliegen) überlagert.
Nun müsst ich theoretisch einfach alle laufenden Animationen beim Aufruf von Showanimation stoppen (Label.BeginAnimation(UIElement.OpacityProperty, null); )
praktisch klappt das aber aus irgendeinem Grund nicht.