【发布时间】:2012-12-12 03:40:44
【问题描述】:
我正在参加有关 WinRT IAsyncOperation、异步、等待的速成课程。我正在尝试使用 IAsyncOperation 包装 Task,但未能想出一个简单的方法来进行转换。
public interface IInfo{}
public class InfoList : IInfo{}
public class Parser {
private async Task<InfoList> ParseList() {
var returnList = new InfoList();
HttpClient client = new HttpClient();
Task<string> htmlTask = client.GetStringAsync("http://stackoverflow.com");
string html = await htmlTask;
// parsing logic...
return returnList;
}
public IAsyncOperation<IInfo> Parse()
{
return AsyncInfo.Run(_ =>
Task.Run<IInfo>(async () =>
{
var returnList = await ParseList();
return returnList;
})
);
// I have tried following but causes InvalidCastException
//return (IAsyncOperation<IInfo>)ParseList().AsAsyncOperation<InfoList>();
}
}
【问题讨论】:
标签: asynchronous windows-runtime async-await