use*_*117 0 .net c# foreach loops task
我需要使用3个任务创建一个foreach循环,这需要等到所有3个任务完成后再移动到下一个任务.就像是
foreach (class r in sets)
{
Task.Factory.StartNew(() => {
DoThisFunction1();
}, TaskCreationOptions.LongRunning);
Task.Factory.StartNew(() => {
DoThisFunction2();
}, TaskCreationOptions.LongRunning);
Task.Factory.StartNew(() => {
DoThisFunction3();
}, TaskCreationOptions.LongRunning);
}
Run Code Online (Sandbox Code Playgroud)
有人可以给出一个简单的方法如何做到这一点?
您可以使用WaitAll哪个没有返回类型,并将阻止Wait任务的类似或WhenAll将返回等待的任务Task.
例:
var tasks = new Task[] {
Task.Factory.StartNew(() => {
DoThisFunction1();
}, TaskCreationOptions.LongRunning),
Task.Factory.StartNew(() => {
DoThisFunction2();
}, TaskCreationOptions.LongRunning),
Task.Factory.StartNew(() => {
DoThisFunction3();
}, TaskCreationOptions.LongRunning)
};
Task.WaitAll(tasks);
// or
await Task.WhenAll(tasks);
Run Code Online (Sandbox Code Playgroud)
可在此处找到更详细的答案