ContactPicker.PickSingleContactAsync Windows 8 C#用法

ContactPicker.PickSingleContactAsync Windows 8 C#用法,c#,asynchronous,contacts,windows-8,C#,Asynchronous,Contacts,Windows 8,有人能给我一个如何正确使用ContactPicker.PickSingleContactAsync()功能的例子吗?在Windows 8异步编程中,我尝试了以下代码,但似乎无法检索结果,更不用说继续了。JavaScript示例有点模糊,我不理解JavaScript代码。我也是C#异步编程新手 ContactPicker cp=新的ContactPicker(); 联系人信息ci; Task Task=cp.PickSingleContactAsync()作为任务; 等待任务; 如何将结果输入到

有人能给我一个如何正确使用ContactPicker.PickSingleContactAsync()功能的例子吗?在Windows 8异步编程中,我尝试了以下代码,但似乎无法检索结果,更不用说继续了。JavaScript示例有点模糊,我不理解JavaScript代码。我也是C#异步编程新手

ContactPicker cp=新的ContactPicker();
联系人信息ci;
Task Task=cp.PickSingleContactAsync()作为任务;
等待任务;
如何将结果输入到“ci”中?此外,我如何确保只获取带有电话号码的联系人?

试试以下方法:

ContactPicker cp = new ContactPicker();
ContactInformation ci = await cp.PickSingleContactAsync();
您不能将WinRT异步方法结果强制转换为任务,因为它们(可能)不是任务。
直接等待它们(如上所述),或使用
startask
扩展方法:

ContactPicker cp = new ContactPicker();
Task<ContactInformation> ciTask = cp.PickSingleContactAsync().StartAsTask();
ContactInformation ci = await ciTask;
ContactPicker cp=新的ContactPicker();
任务ciTask=cp.PickSingleContactAsync().startask();
ContactInformation ci=等待ciTask;

仅此操作可能有效:IAsyncOperation task=cp.PickSingleContactAsync();
ContactPicker cp = new ContactPicker();
Task<ContactInformation> ciTask = cp.PickSingleContactAsync().StartAsTask();
ContactInformation ci = await ciTask;