wpf - 在WPF MVVM中,如何生成在UI线程上运行回调的后台任务?

标签 wpf multithreading events mvvm

我熟悉控件的调度程序对象,但这不能解决MVVM场景中的问题。

我有一个UI命令,该命令在我的VM上调用一个方法,该方法生成一个线程,然后返回,当线程完成时(后台工作程序可能对此有用吗?)它将引发回调,但是窍门是,该回调会修改可观察的集合,那么如何在UI线程上引发此回调?

最佳答案

使用与UI线程关联的Dispatcher。通常,您将拥有一个base ViewModel class,它将Dispatcher公开给所有子类。然后,您的VM将执行以下操作:

Dispatcher.Invoke((ThreadStart) delegate
{
    //this code executes on the UI thread
});

关于wpf - 在WPF MVVM中,如何生成在UI线程上运行回调的后台任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313019/

相关文章:

javascript - 创建和分派(dispatch)自定义 Javascript 事件是否被认为是一种好的做法?

c# - 如何为 DataGrid 设置透明背景?

wpf - 将 MediaElement 绑定(bind)到 WPF 中的 slider 位置

c# - WPF。如何获取 TextBlock 的 DrawingContext?

java - CompletableFuture没有得到执行。如果我使用ExecutorService池,则其工作正常,但不使用默认的forkJoin公共(public)池

javascript - jQuery 子激活父单击事件

wpf - 如何在 ListView 中为不可见(虚拟化)项目绑定(bind) IsSelected

java - Spring的Singleton作用域bean在Web应用程序中的表现如何?

c++ - `decay_copy` 对象的构造函数中的 `std::thread` 有何作用?

javascript - 动态创建的元素上的事件绑定(bind)?