将并行化控制器代码放在MVVM中的视图模型中是不好的

时间:2013-11-20 17:34:59

标签: c# mvvm parallel-processing

我正在使用MVVM模式编写程序。该程序将并行执行大量任务,结果将在前端GUI中更新。我希望在每个任务完成后更新GUI,并且我使用屏障等来控制任务执行。

我的问题是,在viewmodel或model中,我在哪里放置包含屏障的代码?很容易将它放在viewmodel代码中,但我不认为它符合MVVM模式。

但是如果要将代码放在模型中,是否意味着我需要将视图模型对象传递给模型,以便在任务完成时更新对象?

1 个答案:

答案 0 :(得分:3)

您的模型应尽可能干净,便携。即使您决定将处理逻辑放在模型中,它当然也不应该知道上面的层,即ViewModel。您可以通过在模型上使用能够通知感兴趣的ViewModel的事件(如Done,ProgressChanged等)来解决这个问题。 关于这个处理逻辑应该驻留在哪里,我不得不说它取决于它。 此处理是您域名的核心部分吗?这是您的域名在其他场合必须再次执行的操作吗?这段代码应该可以重用吗? 在这种情况下,它似乎属于您的模型。

说过我相信这种逻辑主要属于ViewModel层。您仍然可以使用您的模型来存储数字或任务或处理结果等,但不能存储实际处理。

希望这有帮助。