ContinueWith 更改我的列表顺序

ContinueWith change my list order

我有一个信息列表 这些信息中的每一个都必须在用户控件中,创建用户控件需要很长时间并且用户界面挂起所以我使用了Task.Delay.ContinuWith ()(为了更新添加任何项目后的用户界面)
但是有个问题,信息没有按顺序显示

Dispatcher.Invoke(new Action(() =>
            {
                waterfallFlow.Children.Clear();
                    var parsedValues = doc.DocumentNode.SelectNodes(...).Skip(1)
                         .Select(r =>
                         {...}).ToList();
                    foreach (var item in parsedValues)
                    {
                        Task.Delay(200).ContinueWith(ctx =>
                        {
                            waterfallFlow.Children.Add(_currentUser);
                            waterfallFlow.Refresh();
                        }, TaskScheduler.FromCurrentSynchronizationContext());
                    }
                }
            }), DispatcherPriority.ContextIdle, null);

输出为:

编号 |姓名 |

10 |阿里
9 |哈迪
1 |哈桑
15 | kajsd
...
但是收到的信息应该是这样的

编号 |姓名 |

1 |哈桑
2 |广告
2 |广告
3 |广告
...

考虑使用 Dispatcher.Invoke<TResult> 过载并等待 Task

Dispatcher.Invoke<Task>(async () => {
    waterfallFlow.Children.Clear();
    var parsedValues = doc.DocumentNode.SelectNodes(...)
        .Skip(1)
        .Select(r => {...})
        .ToList();
    foreach (var item in parsedValues) {
        await Task.Delay(200);
        waterfallFlow.Children.Add(item);
        waterfallFlow.Refresh();
    }
}, DispatcherPriority.ContextIdle, null);

这应该允许按照阅读顺序添加项目。