我有一个信息列表这些信息中的每一个都必须在用户控件中,创建用户控件需要很长时间并且用户界面挂起所以我使用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 | 广告
...