C# uwp属性等待显示wierd行为

C# uwp属性等待显示wierd行为,c#,asynchronous,uwp,async-await,uwp-xaml,C#,Asynchronous,Uwp,Async Await,Uwp Xaml,在我的UWP应用程序中,我有两个属性,它们都绑定到UI。这一切都很好,直到我尝试使用Task.delay延迟添加这些属性之一 期望值:视频集合属性应该毫不延迟地获取项目,当前属性应该在延迟一段时间后获取每个项目 问题:当我尝试延迟时,两个属性都会延迟,因为在循环的第一次运行之后,延迟实际上会延迟整个循环的执行,但我只想延迟一行代码 这是我的代码 foreach (var file in VideoFiles) { var props = await file.Properties.Get

在我的UWP应用程序中,我有两个属性,它们都绑定到UI。这一切都很好,直到我尝试使用Task.delay延迟添加这些属性之一

期望值:视频集合属性应该毫不延迟地获取项目,当前属性应该在延迟一段时间后获取每个项目

问题:当我尝试延迟时,两个属性都会延迟,因为在循环的第一次运行之后,延迟实际上会延迟整个循环的执行,但我只想延迟一行代码

这是我的代码

foreach (var file in VideoFiles)
{
    var props = await file.Properties.GetVideoPropertiesAsync();
    var dur = props.Duration;
    var myviews = await DbHelper.GetMyViews(file.Path);
    var vv = new Video
    {
    MyVideoFile = file,
    Views = myviews,
    Duration = $"{dur.Hours.ToString()} : {dur.Minutes.ToString()} : {dur.Seconds.ToString()}",
    Display = await FileHelper.GetDisplay(file),
    };
    Videos.Add(vv);// this line should be execute without any delay

    await Task.Delay(3000);//if I comment this delay line of code then both properties keep getting filled without any delay, which is not what I want

    Current = vv; // this line should be executed after delay
}
更新

实际上,“视频”是一组视频对象,我将它们显示在UI的GridView上,因此我需要毫不延迟地添加它们。
但是Current是一个绑定到页面标题的对象,我需要每3秒更改一次,每3秒标题应该从下一个GridView项目中提取数据并显示出来,这就是为什么我只在更新“Current”时需要延迟的原因属性。

使用
分派器
当前
属性设置在for循环之外。大概是这样的:

public MainPage()
{
    this.InitializeComponent();

    DispatcherTimer timer = new DispatcherTimer();
    timer.Interval = TimeSpan.FromSeconds(3);
    int currentIndex = 0;
    timer.Tick += (s, e) =>
    {
        //this code will run every 3 seconds...
        if (Videos.Count > currentIndex)
        {
            Current = Videos[currentIndex++];
        }
    };
    timer.Start();
}

您不能在单个循环中处理此问题。填写集合并使用计时器选择下一个项目。您可以提供一些关于如何使用计时器的代码吗?您可以说明我应该如何在循环上下文中使用此计时器吗?我的意思是,我应该在循环开始之前启动timer.start()函数吗?是的,它会每3秒钟检查一次视频采集。