MVVM - ViewModel и DataService, где должна находиться задача?
В настоящее время я занимаюсь разработкой в WPF / MVVM, следуя шаблону службы данных, где ViewModel вызывает службу, которая содержит все бизнес-объекты и методы.
Теперь, когда я вызываю сервисный метод, это требует немного времени, поэтому я должен создать новую задачу, чтобы графический интерфейс не зависал.
По вашему мнению, где лучше всего запускать задачу, в 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 ответа
Я бы создал и запустил задачу в представлении модели.
Теоретически, вы можете запустить 3 разные задачи в вашей модели представления и обновлять пользовательский интерфейс только тогда, когда все или первая из них завершены. В этом случае модель представления отвечает за поток управления.
Если у самой реализации метода сервиса есть логика управления, которой требуется асинхронный доступ к нескольким другим сервисам, я бы начал там соответствующие задачи.
Подводя итог, я бы начал задачи, где логика управления находится.
Я бы сделал это в ViewModel, потому что вы можете легко обновить свои свойства в ProgressChanged или в любом другом месте.