c# - 如何将任务添加到 C# Task 并等待所有任务完成?
问题描述
我刚开始接触C#的线程任务。我希望每当我点击按钮时,我都会添加一个任务,然后等待所有任务完成后再进行下一步。
我的代码如下:
List<Task> SingleTaskList = new List<Task>();
private void Add_Click(object sender, RoutedEventArgs e)
{
Task t = Task.Factory.StartNew(() => { Dosomething();});
SingleTaskList.Add(Task.Factory.StartNew(() => { Dosomething(); }));
Task.Factory.ContinueWhenAll(SingleTaskList.ToArray(), tArray =>
{
Dispatcher.Invoke(() =>
{
//Update the UI
});
});
}
但是我发现,当任何一个任务完成后,就会进行下一步。
我应该如何修改这段代码?
解决方案
您可以像这样使用Task.WhenAll:
await Task.WhenAll(SingleTaskList.ToArray());
Dispatcher.Invoke(() =>
{
//Update the UI
});
仅供参考:为了在那里使用 await,您的方法需要标记为异步,或者您需要使用上述语句调度一个新的异步任务。
推荐阅读
- r - 将 position_dodge 与 geom_line 一起使用
- linq - 列出所有最高数据行或特定数据行
- angular - 如何使用打字稿修复角度5中所有页面的“标题中的搜索输入字段”
- python - 返回一个仅有时会使用的对象
- ios - 在导航栏中更改 UIImageView 的帧大小不起作用
- angular - 测试使用服务 Jasmine spyOnObject 的函数
- python - Flask 请求停止 300 毫秒
- linux - 涉及当前系统时间的 bash 别名
- python - 使机器人对最后一条消息作出反应或对带有消息 ID 的消息作出反应
- excel - 使用 SUMIFS 忽略负数