Windows phone 8 在WP8中的联系人列表中追加联系人

Windows phone 8 在WP8中的联系人列表中追加联系人,windows-phone-8,Windows Phone 8,我想从xml文件向联系人列表中添加多个联系人,但要保存contacttask.Show(); 在联系人列表中添加了一个联系人,请任何人告诉我如何解决此问题 这是我的代码: 私有void AddContacts(对象发送者、路由目标) { using (IsolatedStorageFile istf = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedSt

我想从xml文件向联系人列表中添加多个联系人,但要保存contacttask.Show(); 在联系人列表中添加了一个联系人,请任何人告诉我如何解决此问题

这是我的代码:

私有void AddContacts(对象发送者、路由目标) {

        using (IsolatedStorageFile istf = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (IsolatedStorageFileStream istfs = istf.OpenFile("MyContacts.xml",FileMode.Open))
            {
                XDocument doc = XDocument.Load(istfs);
                var query = from d in doc.Root.Descendants("Contacts")
                            select new
                            {
                                firstName = d.Element("name").Value,
                                mobilePhone = d.Element("phone").Value
                            };

                foreach (var po in query)
                {

                    saveContactTask.FirstName = po.firstName;
                    saveContactTask.MobilePhone = po.mobilePhone;
                    saveContactTask.Show();


                }

            }
      }
类被设计为一次只添加一个联系人,Show()函数是异步的。在第一次调用完成之前,您不能添加第二个联系人。您的代码应该被重写,以便对
saveContactTask.Completed+=new EventHandler(saveContactTask_Completed);
事件做出反应,然后开始添加第二个(etc)只有在前一个联系人完成后才能联系。请记住,第二个(etc)联系人可能会使用新的
SaveContactTask

试试这样(这只是想法的一个例子):

添加私有列表列表;
私有SaveContactTask-saveTask;
saveTask.Completed+=addComplete;
void addComplete(…)
{
如果(列表添加计数>0)
{
联系人=列表添加[0];
listToAdd.RemoveAt(0);
保存任务。(从联系人设置值)
saveTask.Show();
}
}

成功添加第一个联系人后,它将从foreach循环中退出,如何解决此问题?我是否应该选择其他解决方案而不是foreach?是的,您需要另一个解决方案。您正在UI线程中运行,无法停止它并等待操作完成。请尝试在saveCon中使用类级别变量创建一个循环tactTask。已完成函数。我认为此链接可能会帮助您[[1]:
private List<Contact> listToAdd;
private SaveContactTask saveTask;

saveTask.Completed += addComplete;

void addComplete(...)
{
   if ( listToAdd.Count > 0 )
   {
       Contact contact = listToAdd[0];
       listToAdd.RemoveAt(0);
       saveTask. (set values from contact)
       saveTask.Show();
   }
}