当前位置: 首页 > news >正文

漳州 网站建设公司重庆seo建站

漳州 网站建设公司,重庆seo建站,wordpress图片主题Repay,网络规划与设计师一、基本介绍 TaskScheduler 是一个抽象类#xff0c;用于控制任务的执行方式#xff0c;特别是它们如何被安排到线程池中的线程上执行。 TaskScheduler 负责将 Task 对象排队并决定何时、以何种方式执行这些任务。 二、TaskScheduler的作用 调度任务#xff1a;将任务分配…一、基本介绍 TaskScheduler 是一个抽象类用于控制任务的执行方式特别是它们如何被安排到线程池中的线程上执行。 TaskScheduler 负责将 Task 对象排队并决定何时、以何种方式执行这些任务。 二、TaskScheduler的作用 调度任务将任务分配给线程池中的线程执行。 控制并发通过限制同时执行的任务数量来控制并发级别。 异常处理虽然不是直接由 TaskScheduler 处理异常但它通过控制任务的执行环境间接影响了异常的处理方式。 三、TaskScheduler的关键点 默认调度器大多数情况下任务默认在 TaskScheduler.Default 调度器上运行它通常与线程池中的线程关联。 自定义调度器你可以创建自定义的 TaskScheduler 来控制任务的执行方式例如限制任务并发数或在特定的线程上运行任务。 任务调度你可以使用 TaskScheduler 来调度任务的执行例如使用 Task.Run 方法时可以指定调度器。 同步上下文在 UI 应用程序中TaskScheduler 通常与 SynchronizationContext 一起使用以确保任务在正确的线程上执行例如在 UI 线程上更新 UI 元素。 任务调度器的层次结构TaskScheduler 可以有一个或多个父调度器这允许你创建复杂的任务调度层次结构。 四、TaskScheduler的简单例子 using System; using System.Threading.Tasks;class Program {static void Main(){// 获取默认的任务调度器TaskScheduler defaultScheduler TaskScheduler.Default;// 创建一个任务Task myTask new Task(() {Console.WriteLine(Task is running on: TaskScheduler.Current.ToString());});// 在默认调度器上运行任务myTask.Start(defaultScheduler);// 等待任务完成myTask.Wait();} } 五、TaskScheduler的完整例子 步骤 1: 创建自定义 TaskScheduler 类 首先我们需要创建一个继承自 TaskScheduler 的类并实现必要的方法。 using System; using System.Collections.Concurrent; using System.Threading; using System.Threading.Tasks;public class LimitedConcurrencyLevelTaskScheduler : TaskScheduler {private readonly int _maxDegreeOfParallelism;private readonly ConcurrentQueueTask _tasks new ConcurrentQueueTask();private readonly CancellationTokenSource _cts new CancellationTokenSource();private readonly object _lockObject new object();private int _currentActiveTasks;public LimitedConcurrencyLevelTaskScheduler(int maxDegreeOfParallelism){if (maxDegreeOfParallelism 0) throw new ArgumentOutOfRangeException(maxDegreeOfParallelism);_maxDegreeOfParallelism maxDegreeOfParallelism;}protected override void QueueTask(Task task){_tasks.Enqueue(task);}protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued){return false;}protected override IEnumerableTask GetScheduledTasks(){return _tasks;}public void Start(){for (int i 0; i _maxDegreeOfParallelism; i){Thread thread new Thread(() {try{while (!_tasks.IsEmpty || !_cts.Token.IsCancellationRequested){Task task;if (_tasks.TryDequeue(out task)){base.TryExecuteTask(task);}else{Thread.Yield();}}}catch (Exception ex){Console.WriteLine(Thread encountered an exception: ex.Message);}});thread.IsBackground true;thread.Start();}}public void Stop(){_cts.Cancel();} } 步骤 2: 使用自定义 TaskScheduler 现在我们可以使用这个自定义的 TaskScheduler 来调度任务。 class Program {static void Main(string[] args){LimitedConcurrencyLevelTaskScheduler scheduler new LimitedConcurrencyLevelTaskScheduler(2);scheduler.Start();for (int i 0; i 10; i){Task.Run(() DoWork(i), scheduler);}Console.WriteLine(Press any key to exit...);Console.ReadKey();scheduler.Stop();}static void DoWork(int workItemId){Console.WriteLine($Work item {workItemId} is running on thread {Thread.CurrentThread.ManagedThreadId});Thread.Sleep(1000); // Simulate work by sleeping} } 解释 LimitedConcurrencyLevelTaskScheduler这是一个自定义的 TaskScheduler它接受一个参数 maxDegreeOfParallelism这定义了同时运行的最大任务数。 QueueTask这个方法将任务添加到一个线程安全的队列中。 TryExecuteTaskInline这个方法始终返回 false因为我们不在调用线程上直接执行任务。 GetScheduledTasks返回当前队列中的任务。 Start启动指定数量的线程来处理队列中的任务。 Stop停止所有线程并取消所有任务。
http://www.laogonggong.com/news/117414.html

相关文章:

  • 网站推广开户在线制作公司网站
  • 聊城专业网站设计公司dw怎么把网站做的漂亮
  • 定制网站开发接私活wordpress分类模版设置插件
  • 网站服务器ipv6软文是什么东西
  • 网站域名备案和做网站wordpress中文主
  • 继续接入备案 增加网站 区别一个人做网站用什么技术
  • 为什么做美食视频网站建设有限公司
  • 虚拟机怎么做网站空间网站怎么做到秒收录
  • 设计一个网站要多久抖音小程序
  • 图片网站模板网站建设建站流程方案
  • 网站头部特效wordpress 建站群
  • 中建卓越建设有限公司网站首页meetsh网站建设
  • 网站建设哪里比较好wordpress模板转为emlog
  • 淘宝网站怎么做网站建设中正在为您转
  • vps如何放置网站唐山市住房和城乡建设局网站
  • 网站如何提高转化率关于域名用于接入境外网站说明书
  • 如何做120急救网站手机号注册的网站
  • 山西省建设监理官方网站火车头wordpress免登录发布
  • 网站推广风险jeykll和wordpress
  • 网站有竞价的统计怎么加百度统计建站行业市场分析
  • 优秀简历制作网站石家庄网络推广公司排名
  • 手表购买网站苏州淘宝网站建设培训
  • 门户网站建设经验交流html5 素材网站
  • 在线网站建设诚信经营网站建设 廊坊
  • 佛山做网站的公司哪家好广州番禺发布
  • 凡科网站建设之后怎么删除wordpress简单的验证码
  • 中英网站源码下载20平米小门店装修
  • asp.net网站开发实战网易企业邮箱收费标准
  • 长沙百度网站制作修改wordpress logo
  • 电信做网站吗西安市网站建设