У нас такая ситуация. У нас есть холст, на котором изображено некоторое количество фигур. Это может быть один или несколько больше (например, тысяч) и нам нужно анимировать их перевод в другое место (на кнопку мыши) с помощью раскадровки:Асинхронный метод вызова в C#
internal void someStoryBoard(figure someFigure, double coordMoveToValue)
{
string sbName = "StoryBoard_" + figure.ID;
string regName = "figure_" + figure.ID;
try
{
cnvsGame.Resources.Remove(sbName);
cnvsGame.UnregisterName(regName);
}
catch{ }
someCanvas.RegisterName(regName, someFigure.Geometry);
var moveFigureYAnimation = new PointAnimation();
moveFigureYAnimation.From = new Point(someFigure.Geometry.Center.X, someFigure.Geometry.Center.Y);
moveFigureYAnimation.To = new Point(someFigure.eGeometry.Center.X, coordMoveToValue);
moveFigureYAnimation.Duration = TimeSpan.FromSeconds(0.5);
var sbFigureMove = new Storyboard();
Storyboard.SetTargetName(sbFigureMove, regName);
Storyboard.SetTargetProperty(sbFigureMove, new PropertyPath(Geometry.CenterProperty));
sbFigureMove.Children.Add(moveFigureYAnimation);
cnvsGame.Resources.Add(sbName, sbFigureMove);
sbFigureMove.Begin();
}
Цифры сохраняются в списке. Мы называем это раскадровке, используя цикл:
for(int i = 0; i<listOfFigures.Count; i++)
{
someStoryBoard(listOfFigures[i], someCoord);
}
Но вот проблема: если у нас есть небольшое количество цифр - код завершения быстро. Но если объем большой - есть задержка после нажатия кнопки и до того, как цифры начнут двигаться. Итак, вот вопрос: можно ли асинхронно вызывать метод someStoryBoard? Возможный следующий алгоритм -> Когда вызывается someStoryBoard, он начинает мгновенно перемещать фигуру, не дожидаясь завершения цикла for.