在Windows Phone上使用yield return调用Web Service

时间:2011-03-01 17:41:55

标签: windows-phone-7 return webservice-client yield

我正在开发一个Windows Phone 7应用程序,我使用Windows Live身份验证来访问用户联系人。我有一个web服务,使用以下方法:

public IEnumerable<LiveIDContact> GetContactsInformationYield(string LocationID, string DelegationToken)
    {
        string uriTemplate = "https://livecontacts.services.live.com/@L@{0}/rest/LiveContacts/Contacts";
        var xdoc = WindowsLiveContactAPIRequest(LocationID, DelegationToken, uriTemplate);
        var contacts = (from contact in xdoc.Descendants("Contact")
                        select contact).ToArray();

        foreach (var con in contacts)
        {
            RetrieveCID(LocationID, DelegationToken, con);
            LiveIDContact c = new LiveIDContact()
            {
                ID = con.Element("ID").Value,
                DisplayName = con.Element("Profiles").Element("Personal").Element("DisplayName").Value,
                CID = (con.Element("CID") != null ? con.Element("CID").Value : "")

            };

            yield return c;
        }

    }

我如何调用app中的方法:

public void GetContactInformationAsync()
    {
        LiveIDClient.GetContactsInformationYieldAsync(LocationID, ConsentToken);
    }

这是问题所在,当我调用这个方法并等待完整事件时。更新我的应用中的联系人列表需要4到5分钟。(性能问题)。是否有任何方式在每次收益率回报中发生事件?所以我可以从那个事件中更新我的列表吗?

我无法在任何地方找到答案,所以希望有人知道答案。

1 个答案:

答案 0 :(得分:0)

这是否为每个联系人单独进行HTTP调用?如果是这样,那么我认为你只需要重新设计网络服务,这样就可以打电话给每百个联系人。