/// <summary> ???????/// 1,对访问此action的用户进行异步处理,然后将此异步加入到全局的list当中, ???????/// 再等待异步处理完成,如果完成,将此异步操作从全局的list中删除,给前端返回处理结果 ???????/// 2,设置全局list要存放的处理人数 ???????/// 3,如果达到上限,直接给用户返回请排队,然后全端排队等待,等待五分钟之后接着提交 ???????/// </summary> ???????/// <returns></returns> ???????public string Index() ???????{ ???????????TaskFactory taskFactory = new TaskFactory(); ???????????if (EBS.Common.Common.ListTask.Count > 1000) ???????????{ ???????????????return "请排队!"; ???????????} ???????????Task task = taskFactory.StartNew(() => ???????????{ ???????????????//do it ???????????????Thread.Sleep(1000*60); ???????????}); ???????????lock (EBS.Common.Common.ListTask) ???????????{ ???????????????EBS.Common.Common.ListTask.Add(task); ???????????} ???????????if (!task.IsCompleted) ???????????????task.Wait(); ???????????lock (EBS.Common.Common.ListTask) ???????????{ ???????????????if(EBS.Common.Common.ListTask.Exists(x=>x==task)) ???????????????????EBS.Common.Common.ListTask.Remove(task); ???????????} ???????????return "完成!"; ???????????????????}
asp.net mvc 设置一个action的访问人数,达到上线排队
原文地址:https://www.cnblogs.com/strayheart/p/10497416.html