首页 > 代码库 > 使用TaskScheduler 调度器 实现跨线程的控件访问
使用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 调度器 实现跨线程的控件访问
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。