MMVM Light 异步使用 WCF

发布于 2024-11-28 04:33:28 字数 177 浏览 0 评论 0原文

使用 WCF 服务实施 MMVM 的最佳实践是什么?视图模型将与服务进行通信。假设在一个视图中我有 3-4 个数据显示模块。模块的所有这些信息都来自不同的 WCF 服务调用。 如果我同步执行此操作,我感觉视图模型中的数据将需要一些时间来加载。

我想异步调用所有这些服务方法,而无需等待第一个调用返回。这样做的好方法是什么?

What is a good practice to implement MMVM with WCF Services? The View model will be communicating with the service. So lets say in a view I have 3-4 data display modules. All this information for the modules is coming from different WCF Service calls.
If I do this synchronously, I have a feeling that the data in the view model will take time to load.

I want to do the calls for all these service methods asynchronously with out waiting for the first call to come back. What is good way of doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

任性一次 2024-12-05 04:33:28

我认为最好的方法是异步调用服务,然后在 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();            
    }
}

I think the best way is to call the Service Asynchronously and then assign value on Complete method, like:

 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();            
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文