等待任务完成

本文关键字:任务 等待 | 更新日期: 2023-09-27 18:30:48

我有这样一个位置:

        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();
        }

我想等待任务完成。BUt 它不是在等待。它在每个消息框之后立即向我显示消息框。

等待任务完成

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

如果要并行启动所有任务,但随后等待它们,则可以创建一个List<Task>然后调用Task.WaitAll - 或者仅使用Parallel.ForEach开始。

你不能做一个布尔值,一旦任务完成就变成真的,然后把其余的放在 if(布尔)循环中吗?

Afaik 你可以调用 Task.Wait()

尝试使用此代码

task1.Wait();

并阅读此任务