Сценарий:
Мне звонят в службу WCF, на получение ответа которой потребуется несколько минут.
Первоначально был сделан вызов с действием, действовавшим на ViewModel , которое затем сохраняло обновленную версию объекта в репозиторий , а затем Репозиторий будет передавать объект на сервисный уровень для отправки в веб-службу .
После выполнения сервисный уровень возвращает ответ в хранилище , а затем в ViewModel , который затем вызывает диалог пользователю, предоставляющему ему ряд опций.
Проблема:
Пользователь может перейти к другим представлениям в приложении, пока они ожидают, что может уничтожить ViewModel , после чего пользователь не получит сообщение, предупреждающее их.
Так что в скорлупе ядра мне нужно сохранить в памяти любую функцию, получающую ответ от хранилища, до ее завершения.
Чтобы обойти это, я переместил диалог и функцию в репозиторий , так как это синглтон, поэтому он останется в памяти, но это побеждает Single Responsibility , так как репозитории должны Отвечать только за предоставление данных, не осуществляющих бизнес логи c.
Вместо этого я попытался поднять это через центр сообщений, но я считаю, что это сохранит ViewModel в памяти, и пользователь может сделать этот запрос несколько раз, что приведет к вызову центра сообщений с каждый запрос.
У кого-нибудь есть лучшие практики для обработки этого сценария или какой-либо документации, к которой он мог бы отослать меня?
Спасибо за вашу помощь заранее:)