C# 中一个限制 Task 并发执行的数量的示例
2019-09-09 11:58 音乐让我说 阅读(3317) 评论(0) 编辑 收藏 举报直接贴代码了:
using System; using System.Linq; using System.Threading; using System.Threading.Tasks; class TaskSample { public static void Do() { Run(); } private static readonly SemaphoreSlim _mutex = new SemaphoreSlim(5); private static void Run() { var allTasks = Enumerable.Range(1, 10000000).Select(id => DoWorkAsync(id)); //await Task.WhenAll(tasks); Task.WaitAll(allTasks.ToArray()); } private static async Task DoWorkAsync(int id) { await _mutex.WaitAsync(); try { Console.WriteLine($"Starting Work {id}"); await HttpClientGetAsync(); Console.WriteLine($"Finished Work {id}"); } finally { _mutex.Release(); } } static async Task HttpClientGetAsync() { await Task.Delay(2000); } }
运行截图:
谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。