C#Task处理比较耗时任务
				
									
					
					
						 | 
						
							
							admin 
							
							
								2025年6月12日 11:34
								本文热度 1892
							
							 
						 | 
					
					
				 
				TaskScheduler.FromCurrentSynchronizationContext():作用是让你能在特定的同步上下文(通常是UI线程)中调度任务,从而确保界面更新等操作在正确的线程上执行。
TaskScheduler:调度任务的机制。
FromCurrentSynchronizationContext():获取当前线程的同步上下文的调度器。
第一种方式不可用于处理耗时任务,否则会卡UI。第二种可以处理相对耗时的任务,10几20秒的没问题。
案例代码如下:按下按钮后,都会对label标签进行修改,但是第一个不能加延时,加了后会卡UI,第二个加了延时后处理任务是界面可以照常拖到。
namespace _023_Task处理耗时任务{    public partial class Task处理耗时任务 : Form    {        public Task处理耗时任务()        {            InitializeComponent();        }
                                
                private void btUpdate_Click(object sender, EventArgs e)        {            Task task = new Task(() =>            {                                this.lbl1.Text = "跨线程访问的一种方式,此方式不适合处理耗时的任务";            });            task.Start(TaskScheduler.FromCurrentSynchronizationContext());        }
                private void btUpdate2_Click(object sender, EventArgs e)        {            var sch1 = TaskScheduler.FromCurrentSynchronizationContext();                        Task task = new Task(() =>            {                Thread.Sleep(5000);            });                        task.ContinueWith(t =>            {                this.lbl1.Text= "跨线程访问的一种方式,此方式可以处理比较耗时的任务";            },sch1);            task.Start();        }    }}
阅读原文:https://mp.weixin.qq.com/s/g1Unbxgg8CmptVCXrEpqNQ
该文章在 2025/6/12 12:08:34 编辑过