我想从xml文件中添加一个联系人到联系人列表,但saveContactTask.Show(); 在联系人列表中添加了一个联系人,请有人告诉我如何解决此问题。
这是我的代码:
private void AddContacts(object sender,RoutedEventArgs e) {
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();
}
}
}
答案 0 :(得分:1)
SaveContactTask类旨在一次只添加一个联系人,而Show()函数是异步的。在第一次通话完成之前,您无法添加第二次联系。您的代码应该被重写以对saveContactTask.Completed += new EventHandler<SaveContactResult>(saveContactTask_Completed);
事件作出反应,并且仅在前一个完成时才开始添加第二个(等)联系人。有可能,新的SaveContactTask
应该用于第二次(等)联系,请牢记这一点。
尝试这样的事情(这只是一个想法的样本):
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();
}
}