我是 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()
异步方法中返回该列表。这就是问题所在:在事件完成他的工作_contactInfoList
之前,我的方法已经返回空列表。ContactsSelected
我知道在这种情况下 async/await 甚至无关紧要,这个问题在通常的方法中会存在,但我只需要使该方法等待事件处理结果。