小编mat*_*ras的帖子

Task.WhenAll - 不等待子任务完成

我对TPL有一些问题.如您所见,我正在创建2个简单任务并将它们添加到列表中.问题(预期的行为)是任务在点击"等待"后立即返回,WorkMethodAsync因此渲染Task.WhenAll无用.有没有办法等待子任务完成?我发现的唯一解决方法是伪装WorkMethodAsync成同步.

private async void button1_Click(object sender, EventArgs e)
{
    Tasks = new List<Task>();
    var myTask1 = Task.Factory.StartNew(async () => await WorkMethodAsync(), CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Default);
    var myTask2 = Task.Factory.StartNew(async () => await WorkMethodAsync(), CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Default);

    Tasks.Add(myTask1);
    Tasks.Add(myTask2);

    await Task.WhenAll(Tasks.ToArray());
}
private async Task WorkMethodAsync()
{
    while (true)
    {
        await Task.Delay(10000);
    }
    return;
}
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading task-parallel-library async-await

4
推荐指数
1
解决办法
1258
查看次数