Witam,
Mam program w którym postać porusza się po planszy wg. algorytmu Dijkstry. Stworzyłem wątek w którym postać przechodzi punkt po punkcie pobierając koordynaty z listy, do poruszania się służy metoda Move która pobiera aktualną pozycję oraz pozycję na której ma się znaleźć postać, z racji iż odwołuje się do elementów mojego głównego okienka WPF'a użyłem dispatchera:
foreach (Point point in way)
{
Application.Current.Dispatcher.BeginInvoke(
DispatcherPriority.Background,
new Action(() => controls.Move(prevPointX, prevPointY, (int) point.X, (int) point.Y)));
prevPointX = (int)point.X;
prevPointY = (int)point.Y;
Thread.Sleep(100);
}
Jednak poruszanie postaci nie jest odpowiednie, czasem nic się nie dzieje, czasem pojawia się w kilku miejscach naraz, jednak wiem że funkcja Move działa poprawnie i poprawne parametry są przekazywane. Co może powodować takie zachowanie? Oraz jak mu zapobiec?