继续更改我的列表顺序



我有一个信息列表 这些信息中的每一个都必须在用户控件中, 创建用户控件需要很长时间 并且用户界面挂起所以我使用了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 | 卡伊斯德
...
但信息应按以下方式接收

身份证 |姓名 |

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);

这应该允许按读取的相同顺序添加项目。

相关内容

  • 没有找到相关文章

最新更新