我有这样的情况:
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等待任务完成。不要等待。它会在每个messageBox之后立即显示MessageBox。
答案 0 :(得分:9)
是的,你开始任务,然后在后台执行。如果您希望循环完全同步,只需在任务中调用ProcessDatas()
即可。你可能启动它然后等待它完成 - 但是不清楚会给你带来什么好处。
如果你想并行启动所有任务,但之后等待它们,你可以创建一个List<Task>
然后调用Task.WaitAll
- 或者只是使用{ {1}}开头。
答案 1 :(得分:1)
一旦完成任务,你能不能让一个Bool成为真,然后将其余部分放在if(bool)循环中?
答案 2 :(得分:0)
Afaik你可以拨打Task.Wait()
答案 3 :(得分:0)