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

在使用Windows App SDK的WinUI 3桌面应用中如何获取DispatcherQueue并在ViewModel中使用

WinUI 3 项目在ViewModel中获取并使用DispatcherQueue的方法

WPF 中所有控件都继承自 DispatcherObject,因此可以很方便地获取 Dispatcher。如果是使用 Windows App SDK 的 WinUI 3 项目,可以按照以下方案实现DispatcherQueue的获取与在ViewModel中的使用:

以下实现方案基于mm8的优质回答扩展整理

  • 第一步:在你的ViewModel中定义DispatcherQueue属性
    代码示例:
    public Microsoft.UI.Dispatching.DispatcherQueue TheDispatcher { get; set; }
  • 第二步:在MainPage.xaml.cs的后台代码构造函数中获取UI线程的调度队列
    必须在主窗口或页面的后台代码中执行该操作,才能获取到UI线程对应的调度队列
    代码示例:
    ViewModel.TheDispatcher = Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread();

完成上述配置后,就可以在ViewModel中直接调用该调度队列执行UI线程操作,示例用法如下:

TheDispatcher.TryEnqueue(() =>
{
     // 此处编写需要在UI线程执行的代码
});

注:本实现基于已有公认回答扩展,未作为独立答案发布,仅供有需要的开发者参考。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:24:04