You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6中如何更新UI线程?求替代.NET 4.x Dispatcher的方案

.NET 6中WPF/UWP的UI线程调度方法

WPF场景

在.NET 6的WPF项目中,Dispatcher依然保留,用法和.NET 4.x基本一致:

  • 全局获取UI线程Dispatcher并执行同步操作:
App.Current.Dispatcher.Invoke(() => 
{
    Messages += $"{message}{Environment.NewLine}";
});
  • 若处于控件上下文内,可直接通过控件的Dispatcher属性调用:
myControl.Dispatcher.Invoke(() => 
{
    Messages += $"{message}{Environment.NewLine}";
});
  • 推荐使用异步版本避免阻塞线程:
await App.Current.Dispatcher.InvokeAsync(() => 
{
    Messages += $"{message}{Environment.NewLine}";
});

UWP/WinUI 3场景

.NET 6中UWP或WinUI 3不再使用传统Dispatcher,转而用DispatcherQueue调度UI线程操作:

  • 获取当前UI线程的DispatcherQueue:
var dispatcherQueue = DispatcherQueue.GetForCurrentThread();
  • 调度操作到UI线程:
dispatcherQueue.TryEnqueue(() => 
{
    Messages += $"{message}{Environment.NewLine}";
});
  • 控件上下文内可直接使用控件的DispatcherQueue属性:
myTextBox.DispatcherQueue.TryEnqueue(() => 
{
    Messages += $"{message}{Environment.NewLine}";
});

补充说明

WinUI 3项目需确保引用Microsoft.UI.Xaml命名空间;WPF项目无需额外引用,Dispatcher属于System.Windows.Threading命名空间。

内容的提问来源于stack exchange,提问作者Russ_S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:40:36