Foreach等待任务完成

Ezi*_*nze 0 c# foreach task-parallel-library

我有这样的情绪:

        foreach (var item in listBoxFileNames.SelectedItems)
        {
            MessageBox.Show("I am not waiting");
            CancellationTokenSource tokenSourcve = new CancellationTokenSource();
            CancellationToken token = tokenSourcve.Token;

            Task task1 = new Task(() =>
                {
                    ProcessDatas(); // method
                }
                , token);

            task1.Start();
        }
Run Code Online (Sandbox Code Playgroud)

我想让foreach等待任务的完成.不要等待.它会在每个messagBox之后立即显示MessageBox.

Jon*_*eet 9

是的,您正在启动任务,然后在后台执行.如果您希望循环完全同步,则ProcessDatas()根本不要在任务中调用.你可以启动它然后等待它完成 - 但是不清楚会给你带来什么好处.

如果你想并行启动所有任务,然后等待它们,你可以创建一个List<Task>然后调用Task.WaitAll- 或者只是Parallel.ForEach用来开始.