C# 在WPF中使用ReactiveUI从长时间运行的命令提供反馈的正确方法

C# 在WPF中使用ReactiveUI从长时间运行的命令提供反馈的正确方法,c#,.net,wpf,reactiveui,C#,.net,Wpf,Reactiveui,我有一个C#/WPF/.NET4.5应用程序,用户将使用它打开某些文件。然后,应用程序将经历很多动作——读取文件,通过许多插件和解析器传递。这些文件可能相当大(>100MB),因此这可能需要一段时间。我想让用户了解UI中正在发生的事情,因此在我的viewmodel中,我有一些用于显示当前状态和进度条的内容 现在我想变得酷和现代,并使用reactiveui异步命令支持来实现这一点,这对我来说是全新的 对于加载/解析过程的反馈消息,最好的方法是什么?状态消息和进度条val/max值需要在UI线程上设

我有一个C#/WPF/.NET4.5应用程序,用户将使用它打开某些文件。然后,应用程序将经历很多动作——读取文件,通过许多插件和解析器传递。这些文件可能相当大(>100MB),因此这可能需要一段时间。我想让用户了解UI中正在发生的事情,因此在我的viewmodel中,我有一些用于显示当前状态和进度条的内容

现在我想变得酷和现代,并使用reactiveui异步命令支持来实现这一点,这对我来说是全新的

对于加载/解析过程的反馈消息,最好的方法是什么?状态消息和进度条val/max值需要在UI线程上设置,这是非常基本的东西。我应该将我的数据加载器实现为一个IObservable,还是使用MessageBus组件更好

请记住,一个用户可能会同时向应用程序加载几个这样的大文件,我希望用户界面在加载过程中尽可能保持响应


如能举例说明如何正确实施,我们将不胜感激

我在其他地方与大师本人(Paul C.Betts)核实了这一点,他告诉我,处理这一问题的方法是使用显示进度信息的应用程序来创建主题,并将其传递给进行实际加载/解析的人员。然后,它们可以使用.OnNext()将新信息推送到主机

这也有助于单元测试,在单元测试中,可以只提供一个不会订阅的虚拟主题