对所有项目同时执行foreach块?

时间:2017-12-02 08:22:16

标签: c# foreach xamarin.forms

我有这个foreach循环,可以为四个图像更改图像的来源(在Xamarin Forms应用程序中):

int i = 0;
            Device.StartTimer(TimeSpan.FromMilliseconds(50), () =>
            {
                i ++;
                foreach (var img in imgs)
                {
                    img.Source = $"radial{i}.png";
                }
                if (i == 5)
                    i = 0;
                return true;
            });

但结果是四个图像没有同时变化,动画也不平滑。这里的网格分为四个季度,每个季度都有自己的图像视图:

enter image description here

当我使用FromSeconds(1)代替FromMilliseconds(200)时,动画变得更加流畅

这些是我使用的图像,当我想画一个完整的圆圈时,我会旋转它们:

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以尝试使用System.Collections.Concurrent并使用

调用循环
Parallel.ForEach(imgs, img => {
    img.Source = $"radial{i}.png";
});

不过,从您要实现的目标来看,我宁愿使用SkiaSharp绘图插件以编程方式创建动画。