C#Task处理比较耗时任务
|
admin
2025年6月12日 11:34
本文热度 317
|
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 编辑过