我有一个Task列表,我在Task.WhenAll中添加了它们:
List<Task> taskList = new List<Task>();
taskList.Add(new Task(() => { }));
taskList.Add(new Task(() => { }));
taskList.Add(new Task(() => { }));
Task.WhenAll(taskList)
.ContinueWith((completedReference) =>
{
taskList.ForEach(x => x.Dispose());
});
在Task.WhenAll中添加任务后,有没有办法从List启动所有任务?
答案 0 :(得分:0)
List<Task> taskList = new List<Task>();
taskList.Add(new Task(() => { }));
taskList.Add(new Task(() => { }));
taskList.Add(new Task(() => { }));
foreach(var task in taskList)
{
task.Start();
}
Task.WhenAll(taskList)
或者,您可以创建任务并在某个时刻启动它:
List<Task> taskList = new List<Task>();
taskList.Add(Task.Run(() => { }));
taskList.Add(Task.Run(() => { }));
taskList.Add(Task.Run(() => { }));
答案 1 :(得分:0)
你可以试试这个
Task.Factory.StartNew(() => taskList.ForEach(task => task.Start()));
或者你可以尝试
Parallel.ForEach(taskList, task => task.Start());
在完成所有任务之前,它仍将阻止执行线程,但它将在内部线程池上执行启动操作,