上市公司网站建设方案,小程序一个页面多少钱,兴化建设局网站,将wordpress压缩包解压至一个空文件夹_并上传它.最近遇到了一个业务场景#xff0c;需要对List中的数据逐个发起http请求(List中的数据各自独立#xff0c;对执行顺序无要求)#xff0c;考虑到可以使用多线程加快处理速度。
封装了如下方法#xff1a; /// summary/// 多线程处理数据-无返回值/// /summary需要对List中的数据逐个发起http请求(List中的数据各自独立对执行顺序无要求)考虑到可以使用多线程加快处理速度。
封装了如下方法
/// summary/// 多线程处理数据-无返回值/// /summary/// param namelist/param/// param nameaction数据处理方法/param/// param namethreadCount开启线程数量/param/// param namewaitFlag是否等待全部结束/paramstatic void RunTaskT(ListT list, ActionT action, int threadCount 5, bool waitFlag true){var queue new ConcurrentQueueT(list);threadCount Math.Min(threadCount, list.Count);Task[] tasks new Task[threadCount];for (int i 0; i threadCount; i){tasks[i] Task.Run(() {while (queue.TryDequeue(out T t)){action(t);}});}if (waitFlag){Task.WaitAll(tasks);}}/// summary/// 多线程处理数据-有返回值/// /summary/// param namelist待处理数据/param/// param namefunc数据处理方法/param/// param namecount开启线程数量/paramstatic ListTReturn RunTaskT, TReturn(ListT list, FuncT, TReturn func, int threadCount 5){var result new ConcurrentBagTReturn();var queue new ConcurrentQueueT(list);threadCount Math.Min(threadCount, list.Count);var tasks new Task[threadCount];for (int i 0; i threadCount; i){tasks[i] Task.Run(() {while (queue.TryDequeue(out T t)){result.Add(func(t));}});}Task.WaitAll(tasks);return result.ToList();}
使用示例
public void DoSingle(User user, string param1, string param2){//HttpHelper.Get(http://xxxx/useriduser.id);//doSomething();Console.WriteLine(user.Id - user.Name - param1 - param2);}public string DoSingle2(User user, string param1, string param2){//HttpHelper.Get(http://xxxx/useriduser.id);//doSomething();Console.WriteLine(user.Id - user.Name - param1 - param2);return user.Id -666;}public class User{/// summary/// id/// /summarypublic int Id { get; set; }/// summary/// 姓名/// /summarypublic string Name { get; set; }}public void Test(){var list new ListUser {new User { Id 1, Name 张三 },new User { Id 2, Name 李四 },new User { Id 3, Name 王五 }};RunTask(list, t DoSingle(t, 参数1, 参数2));var retList RunTask(list, t DoSingle2(t, 参数1, 参数2));}