场景:
我正在拨打WCF服务的电话,这将需要几分钟的时间来获得响应。
最初,调用是通过ViewModel上的操作进行的,然后将对象的更新版本保存到Repository,然后Repository会将对象传递给服务层将被发送到Web服务。
一旦完成服务层,响应将返回到存储库,然后返回到ViewModel,然后将向用户提出对话,为他们提供一系列选项。
问题:
用户在等待时可以在应用程序中转到其他视图,这会破坏ViewModel,从而使用户不会收到警告他们的消息。
因此,在一个坚果壳中,我需要保留从存储库中接收到响应的任何函数,直到其完成为止。
为了解决这个问题,我将对话和功能移到了repository中,因为这是一个单例,因此将保留在内存中,但是这会破坏Single Responsibility,因为该存储库仅应负责提供数据不执行业务逻辑。
我已经考虑通过消息传递中心来提高它,但是我相信这会将ViewModel保留在内存中,并且用户可以多次发出此请求,从而导致每个请求都调用消息传递中心。
是否有人有最佳实践来处理这种情况或他们可以向我推荐的任何文档?
感谢您的提前帮助:)
在这种情况下,您应该看一下后台任务。它不属于移动应用程序的生命周期。如果您的过程耗时数分钟,则几乎不可能中继应用本身,因为用户可以随时终止它或使其进入睡眠状态,并且您无法阻止它。