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 編輯過