用途:该技能用于讲解 WPF Dispatcher 的优先级系统与线程模式,帮助在实现后台操作、保持 UI 响应或理解调度机制时正确使用 Dispatcher。
主要能力:列出从高到低的优先级及取值与用例,包括 Send(10,同步,避免使用,有死锁风险)、Normal(9,标准操作)、DataBind(8,绑定更新)、Render(7,渲染操作)、Loaded(6,Loaded 事件处理)、Input(5,用户输入处理)、Background(4,后台任务,UI 保持响应)、ContextIdle(3,上下文操作之后)、ApplicationIdle(2,应用空闲,缓存清理)、SystemIdle(1,系统空闲)、Inactive(0,已禁用)。
常见模式:后台工作保持 UI 响应时用 await Dispatcher.InvokeAsync(..., DispatcherPriority.Background);渲染完成后用 DispatcherPriority.Loaded 执行 ScrollIntoView;空闲清理用 DispatcherPriority.ApplicationIdle。让出模式在长操作中每处理 100 项调用 await Dispatcher.Yield(DispatcherPriority.Background) 并更新进度。
线程规则:用 Dispatcher.CheckAccess() 判断是否在 UI 线程,不在则用 Dispatcher.Invoke 更新 UI;后台线程中先 await Task.Run 执行重计算,再用 Dispatcher.Invoke 回到 UI 显示结果。
避免:不要用 DispatcherPriority.Send 调用 Invoke,可能死锁;不要用 Thread.Sleep 阻塞 UI 线程,应改用 await Task.Delay。
限制:资料未提供该技能的安装方式、平台要求、收费信息或更多使用步骤。