在WPF MVVM命令行为中执行后台任务的首选方法

时间:2011-11-19 20:28:28

标签: wpf mvvm prism

我知道这个问题有点主观..但我基本上想看看有没有比我想出的更好的方法。

我有一个基本的MVVM设置,其中树视图绑定到树结构。

此结构具有按需加载的节点。

当我展开一个节点时,我会触发一个命令行为,在这种行为中,我查询必要的数据,并将其添加到节点。

我的第一直觉是使用后台工作者(在命令行为事件中),我传递了我正在扩展的节点的id。完成后,工作人员将找到该节点,并附加其子节点。

这是我从winforms开发继承的方法。好奇,如果有一个更好的架构解决方案。

2 个答案:

答案 0 :(得分:6)

我们目前使用Task Parallel Library (TPL),因为它可以更轻松地将数据传递给要执行的方法,并使您的代码看起来更像一个通常更容易阅读和理解的典型同步方法。它还使您更接近异步和等待.NET 4.5的编码风格,对Windows 8编程非常重要。

答案 1 :(得分:2)

比尔对async / await模式的回答很好。对于4.0,我更喜欢Task对象:

Task.Factory.StartNew(Action);

虽然这取决于你在做什么。有时我会使用BackgroundWorker来获得进度支持。