等待任务完成
本文关键字:任务 等待 | 更新日期: 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();
并阅读此任务