我正在开发一个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分钟。(性能问题)。是否有任何方式在每次收益率回报中发生事件?所以我可以从那个事件中更新我的列表吗?
我无法在任何地方找到答案,所以希望有人知道答案。
答案 0 :(得分:0)
这是否为每个联系人单独进行HTTP调用?如果是这样,那么我认为你只需要重新设计网络服务,这样就可以打电话给每百个联系人。