首页 > 解决方案 > 如何将任务添加到 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
            });

       });
}

但是我发现,当任何一个任务完成后,就会进行下一步。

我应该如何修改这段代码?

标签: c#

解决方案


您可以像这样使用Task.WhenAll

await Task.WhenAll(SingleTaskList.ToArray());
Dispatcher.Invoke(() =>
            {
               //Update the UI
            });

仅供参考:为了在那里使用 await,您的方法需要标记为异步,或者您需要使用上述语句调度一个新的异步任务。


推荐阅读