使用TaskScheduler 调度器 实现跨线程的控件访问
Posted Young_汨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用TaskScheduler 调度器 实现跨线程的控件访问相关的知识,希望对你有一定的参考价值。
1 //任务调度器 2 TaskScheduler UIscheduler = null; 3 public Form1() 4 { 5 //获取任务调度器 6 UIscheduler = TaskScheduler.FromCurrentSynchronizationContext(); 7 InitializeComponent(); 8 } 9 10 private void btnTaskScheduler_Click(object sender, EventArgs e) 11 { 12 System.Threading.CancellationTokenSource cts = new System.Threading.CancellationTokenSource(); 13 //启动一个任务线程 14 Task<int> t = Task.Run(() =>Sum(100)); 15 //使用UIscheduler 调度器 实现跨线程的控件访问 16 t.ContinueWith(task => txtRes.Text = t.Result.ToString(), cts.Token,TaskContinuationOptions.OnlyOnRanToCompletion,UIscheduler); 17 t.ContinueWith(task => txtRes.Text = "Error",System.Threading.CancellationToken.None, TaskContinuationOptions.OnlyOnFaulted,UIscheduler); 18 } 19 private int Sum(int num) 20 { 21 int res = 0; 22 for (int i = 0; i <= num; i++) 23 { 24 checked { res += i; } 25 //res += i; 26 } 27 return res; 28 }
以上是关于使用TaskScheduler 调度器 实现跨线程的控件访问的主要内容,如果未能解决你的问题,请参考以下文章
自定义一个简单的Task调度器任务循环调度器TaskScheduler
Spark源码剖析——SparkContext的初始化_创建任务调度器TaskScheduler