0

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

现在,当我调用服务方法时,这需要一些时间,所以我应该创建一个新任务,以使 GUI 不会冻结。

在您看来,在 ViewModel 中还是在 Service 本身中,启动任务的最佳位置在哪里?

...
// 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();
    }
}   
4

2 回答 2

1

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

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

如果服务方法实现本身具有需要异步访问其他几个服务的控制逻辑,我将在那里启动相应的任务。

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

于 2015-09-22T13:38:30.407 回答
0

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

于 2015-09-22T13:25:40.500 回答