我在Prism应用程序中安装了许多模块,这些模块加载的数据需要 3-8秒才能从服务中获取。
我希望能够在我的 bootstrapper 中说出这样的话:
伪码:
Customers allCustomers = Preloader(Models.GetAllCustomers);
这将在后台线程中运行,当用户实际需要变量“allCustomers”时,它将完全加载。
在Prism / Unity中是否有自动服务进行此类预加载?
答案 0 :(得分:1)
不,没有。
...然而
您可以考虑将ViewModel与ContainerControlledLifetime一起添加到您可以使用的ConfigureContainer方法中的容器中。您将在ViewModel的构造函数中启动线程请求,并允许Views将此ViewModel从Container中拉出。
即使他们在GetAllCustomers方法触发之前将ViewModel从容器中取出,如果您将客户存储在实现INotifyPropertyChanged中,他们也会被正确通知。
如果更合适,您也可以从模块(在Initialize方法中)而不是在引导程序中执行此操作(例如,如果您的模块实际上了解您的客户模型)。