专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016      微信咨询  |  联系我们

C# 中一个限制 Task 并发执行的数量的示例

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:45:31       共计:3643 浏览



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);

       }


   }

运行截图:

 

谢谢浏览!



版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:c# parallel.for怎么控制并发数量,控制多5个并发量 | ·下一条:C#教程之C#线程执行超时处理与并发线程数控制实

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有