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