MVVM - ViewModel和DataService,应该在哪里找到任务?

时间:2015-09-22 12:53:25

标签: c# wpf mvvm viewmodel dataservice

我目前正在按照 dataservice 模式开发WPF / MVVM,其中 ViewModel 调用包含所有业务对象的服务和方法。

现在,当我调用服务方法时,这需要一点时间,所以我应该创建一个新的Task来让GUI不被冻结。

在您看来,在ViewModel或服务本身中,开始任务的最佳位置在哪里?

...
// TaskFactory.StartNew(() => {}); // where I should put this ? *
...

class DataService
{
    MyBussObj mbo;

    CallBusinessOperation()
    {
        // * here ?
        while (mbo.Next())
        {
            // requires a while
        }
    }
}

class MyViewModel
{
    DataService service = new DataService();

    void DoIt()
    {
        // * here ?
        service.CallBusinessOperation();
    }
}   

2 个答案:

答案 0 :(得分:1)

我会在视图模型中创建并启动任务。

从理论上讲,您可以在视图模型中启动3个不同的任务,并且只在完成所有或第一个UI时更新UI。在这种情况下,视图模型负责控制流程。

如果服务方法实现本身具有需要访问其他几个服务异步的控制逻辑,我会在那里开始各自的任务。

总而言之,我将启动控制逻辑所在的任务。

答案 1 :(得分:0)

我会在ViewModel中执行此操作,因为您可以轻松地在ProgressChanged或您想要的任何其他内容上刷新属性。