c# - 对所有项目同时执行 foreach block ?

标签 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;
            });

但结果是四张图片不是同时变化的,动画不流畅。这里网格被分为四个部分,每个部分都有自己的 ImageView :

enter image description here

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

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

enter image description here

最佳答案

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

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

但是根据您想要实现的目标来判断,我宁愿使用 SkiaSharp 绘图插件以编程方式创建动画。

关于c# - 对所有项目同时执行 foreach block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47605966/

相关文章:

c# - 以 xamarin 形式获取设备的经纬度位置

c# - c# 中可缩放、可打印、可滚动的火车运动图

c# - IronPython:意外 token 'from'

php - 在迭代中途在 foreach 中执行更改代码

VB.NET "For each"与 ".GetUpperBound(0)"

php - 通配符数组比较——提高效率

xamarin - 如何在 Xamarin.Forms 中检测设备的屏幕方向?

xamarin.forms - 如何在 xamarin.forms 中为条目单元格设置左右填充

c# - 学习用 C# 编写多线程应用程序的引用资料?

c# - 使用 WinRT 的 Windows.Graphics.Capture 应用像素着色器