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 или в любом другом месте.

Другие вопросы по тегам