繁体   English   中英

Foreach等待任务完成

[英]Foreach wait for task to complete

我有这样的说法:

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

我想让foreach等待任务完成。 但它没有等待。 它在每个messagBox之后立即向我显示MessageBox。

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

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

一旦完成任务,您能否使布尔变为真,然后将其余的放入if(bool)循环中?

Afaik您可以只调用Task.Wait()

尝试使用此代码

task1.Wait();

并阅读此任务

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM