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