我目前正在按照 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();
}
}
答案 0 :(得分:1)
我会在视图模型中创建并启动任务。
从理论上讲,您可以在视图模型中启动3个不同的任务,并且只在完成所有或第一个UI时更新UI。在这种情况下,视图模型负责控制流程。
如果服务方法实现本身具有需要访问其他几个服务异步的控制逻辑,我会在那里开始各自的任务。
总而言之,我将启动控制逻辑所在的任务。
答案 1 :(得分:0)
我会在ViewModel中执行此操作,因为您可以轻松地在ProgressChanged或您想要的任何其他内容上刷新属性。