使用 WCF 服务实现 MMVM 的最佳做法是什么? View 模型将与服务通信。所以让我们说在一个 View 中我有 3-4 个数据显示模块。模块的所有这些信息都来自不同的 WCF 服务调用。
如果我同步执行此操作,我会感觉 View 模型中的数据将需要时间来加载。
我想异步调用所有这些服务方法,而无需等待第一个调用返回。这样做的好方法是什么?
最佳答案
我认为最好的方法是异步调用服务,然后在 Complete 方法上赋值,例如:
class TestViewModel : ViewModelBase
{
private ObservableCollection<string> data;
public ObservableCollection<string> Data
{
get { return data; }
set
{
if (value == data) return;
data = value;
RaisePropertyChanged("Data");
}
}
public TestViewModel()
{
GetDataClient proxy = new GetDataClient();
System.EventHandler<GetDataCompletedEventArgs> Client_GetDataCompleted = null;
Client_GetDataCompleted = (s, e) =>
{
if (e.Error == null && e.Result != null)
{
Data = new ObservableCollection<SelectionItem<string>>(e.Result));
}
proxy.GetDataCompleted -= Client_GetDataCompleted;
};
proxy.GetDataCompleted += Client_GetDataCompleted;
proxy.GetDataAsync();
}
}
关于wcf - MMVM Light 异步使用 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6943419/