wcf - MMVM Light 异步使用 WCF

标签 wcf mvvm

使用 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/

相关文章:

c# - Silverlight 和 WCF : NotFound error!

wcf - 获取 WCF 服务实现中参数的原始 XML

android - Kotlin 将参数从 fragment 传递给 ViewModel

c# - 如何在 mvvm 模型中从数据库中保存和检索复选框值?

c# - WCF - 传输安全是否仅适用于 Intranet 方案?

c# - 无法添加 mandrill-webhook

wcf - 如何在 WF 工作流中模拟 Web 服务调用?

vb.net - 如何扩展 ComboBox 以支持命令 (MVVM)?

c# - 在 WPF (MVVM) 中使模型静态化是一种好习惯吗?

c# - 将 ObervableCollection 绑定(bind)到 ListBox