我对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)