Foreach与lambda的ToList().Foreach区别
1.ToList().Foreach无法保证内部异步方法的顺序;
2.Foreach 可以保证内部异步方法的顺序;
public static async Task Main() { var strings = new List<string> { "B", "C", "D" }; Console.WriteLine("A"); strings.ForEach(async s => { await AsyncMethod(s); } ); Console.WriteLine("E"); } private static async Task AsyncMethod(string s) { await Task.Run(() => { Console.WriteLine(s); }); } strings.ForEach(async s => { await AsyncMethod(s); }); foreach (var s in strings) await AsyncMethod(s);
ForEach
does not support an async
delegate since it takes an Action<T>
. That reduces your method to un-awaitable async void
. ForEach
was never intended for a Func<Task>
or any other async variant. Calling .Wait
on AsyncMethod
will cause a deadlock with a single threaded synchronization context. You have a few choices though:

您的资助是我最大的动力!
金额随意,欢迎来赏!

我写的东西能让你能懂,那是义务
毕竟占用了你生命中的宝贵的时间和注意力
要是你还能喜欢我的作品,那就是缘分了
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【青青子衿】!