【发布时间】:2013-11-07 20:18:09
【问题描述】:
我是 C# async/await 的新手,在尝试使用异步方法时遇到了一些问题。 我有一个收藏:
private IList<IContactInfo> _contactInfoList
还有一个异步方法:
public async Task<IList<IContactInfo>> SelectContacts()
{
_contactInfoList = new List<IContactInfo>();
ContactsSelector selector = new ContactsSelector();
selector.ShowPicker();
selector.ContactsSelected += (object sender, ContactsSelectorEventArgs e) =>
{
this._contactInfoList = e.Contacts;
};
return _contactInfoList;
}
联系人选择器是一个弹出式用户控件,允许从手机中选择一些联系人,点击“确定”按钮后会触发ContactsSelected 事件。我需要从事件参数e.Contacts 中获取选定的联系人列表,并在上面提到的SelectContacts() 异步方法中返回该列表。这就是问题所在:在ContactsSelected 事件完成他的工作之前,我的方法已经返回空列表_contactInfoList。我知道在这种情况下 async/await 甚至无关紧要,这个问题在通常的方法中会存在,但我只需要让那个方法等待事件处理结果。
【问题讨论】:
标签: c# .net windows-phone-8 task-parallel-library async-await