我有一个Facebook的查询是通过使许多小的请求如下“System.Threading.Tasks.Task”不包含“结果”
var client = new FacebookClient(accessToken);
var dynamic = client.Get(connection, new { fields = "name,from,story,message,picture,comments", limit = count});
foreach (var dynPost in results.data)
{
posts.Add(ConvertToPost(dynPost));
}
我试图让这个更快的定义到Facebook并行。
using (profilingService.Start("Facebook calls"))
{
var pullSize = 25;
var numberOfCalls = (int)Math.Ceiling(count/(double)pullSize);
var taskQueue = new Queue<Task>();
for (int i = 0; i < numberOfCalls; i++)
{
taskQueue.Enqueue(Task.Factory.StartNew(() =>
{
var offset = i * pullSize;
var client = new FacebookClient(accessToken);
return client.Get(connection, new { fields = "name,from,story,message,picture,comments", limit = 25, offset = offset });
}));
}
Task.Factory.ContinueWhenAll(
taskQueue,
tasks =>
{
//t.Result here is giving me the error
var results = tasks.Select(t => t.Result);
foreach (var result in results)
{
foreach (var dynPost in result.data)
{
posts.Add(ConvertToPost(dynPost.data));
}
}
});
}
首先我对var results = tasks.Select(t => t.Result);
错误361“System.Threading.Tasks.Task”得到一个错误的不包含“结果”,并没有扩展方法“结果的定义 '接受类型的第一 参数‘System.Threading.Tasks.Task’可以找到(你 缺少using指令或程序集引用?)
t是类型Task<AntecedentResult>
哪一个把我带到这个页面,但仍然无法解决它。 What's wrong with this async Task method?
另外,我还没有太多的这种并行编码的经验,我做错了什么或应该以不同的方式做什么?