Parallel.For 并发控制
普通并发
Parallel.For(1, 500, new ParallelOptions() { MaxDegreeOfParallelism = 2 }, i => { Console.WriteLine(i); Thread.Sleep(2000); });
异步并发
此时,内部并不会等待方法执行完成,并发数量失效
Parallel.For(1, 500, new ParallelOptions() { MaxDegreeOfParallelism = 2 }, async i => { Console.WriteLine(i); await Task.Delay(2000); });
可以在里面再套一层
Parallel.For(0, 500, new ParallelOptions { MaxDegreeOfParallelism = 2 }, i => { Task.Run(async () => { Console.WriteLine(i); await Task.Delay(2000); }).Wait(); });
在ui程序中,如果事件层需要使用async,又需要再套一层
啊?
private async void Button_Click(object sender, RoutedEventArgs e) { await Task.Run(() => { Parallel.For(0, 100, new ParallelOptions() { MaxDegreeOfParallelism = 2 }, i => { Task.Run(async () => { Console.WriteLine(i); await Task.Delay(2000); }).Wait(); }); }); }
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步