小心使用 List 的 ForEach 方法

💡 原文中文,约1500字,阅读约需4分钟。
📝

内容提要

List 的 ForEach 方法的参数是一个同步的委托方法,如果里面是一个异步方法,则不会等待任务完成,可能会出现 BUG,正确的做法是使用 foreach 来代替,如果要等待异步方法完成,则需要使用 Func<Task> 或 Func<T, Task> 代替 Action 或 Action<T>。

🎯

关键要点

  • List 的 ForEach 方法的参数是一个同步的委托方法。
  • 在 ForEach 中使用异步方法时,不会等待任务完成,可能导致 BUG。
  • 正确的做法是使用 foreach 来代替 ForEach。
  • 如果需要等待异步方法完成,应使用 Func<Task> 或 Func<T, Task> 代替 Action 或 Action<T>。
  • 示例代码展示了 ForEach 的输出与预期不符的情况。
  • ForEach 方法的签名显示其参数为 Action<T>,是同步的。
  • 使用 foreach 遍历可以确保异步任务按顺序完成。
➡️

继续阅读