我只是Async从书本上学习编程,呵呵!他们的例子不起作用。
作者(WebAPI2 书中的 Adam Freeman,第 3 章,第 47 页!)想要解释一种技术,当我们有一系列同步语句并且我们想要执行它们时Async。他说
这是通过创建一个启动任务来完成的,该任务包装我们需要执行的语句并返回任务作为方法的结果。
然后他说看这个例子。好惊喜!它甚至不起作用,因为它无法从 转换long为Task<long>
我该如何修复这段代码?
public interface ICustomController
{
Task<long> GetPageSize(CancellationToken cancellationToken);
}
public Task<long> GetPageSize(CancellationToken cancellationToken)
{
WebClient wb = new WebClient();
Stopwatch sw = Stopwatch.StartNew();
List<long> results = new List<long>();
for(int i=0; i<10; i++)
{
if (!cancellationToken.IsCancellationRequested)
{
Debug.WriteLine("Making Request {0} ", i);
results.Add(wb.DownloadData(TargetUrl).LongLength);
}
else
{
Debug.WriteLine("Cancelled...");
return 0;
}
}
Debug.WriteLine("Elapsed ms: {0} ", sw.ElapsedMilliseconds);
return (long)results.Average();
}
请注意,他故意从方法中删除了aysncand ,以便他可以解释这种技术......但他忘记了实际修复他的代码。await
温温酱
守着星空守着你
相关分类