Asp.net ';System.Threading.Tasks.Task';不包含';结果';
我有一个facebook查询,如下所示Asp.net ';System.Threading.Tasks.Task';不包含';结果';,asp.net,asp.net-mvc-3,asp.net-4.0,Asp.net,Asp.net Mvc 3,Asp.net 4.0,我有一个facebook查询,如下所示 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(dy
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));
}
}
});
}
使用(profilingService.Start(“Facebook呼叫”))
{
var-pullSize=25;
var numberOfCalls=(int)数学上限(count/(double)pullSize);
var taskQueue=新队列();
for(int i=0;i
{
var offset=i*pullSize;
var client=新的FacebookClient(accessToken);
返回client.Get(connection,new{fields=“name,from,story,message,picture,comments”,limit=25,offset=offset});
}));
}
Task.Factory.continuewhalll(
任务队列,
任务=>
{
//t、 这里的结果给出了错误
var results=tasks.Select(t=>t.Result);
foreach(结果中的var结果)
{
foreach(结果数据中的var dynPost)
{
添加(ConvertToPost(dynPost.data));
}
}
});
}
首先,我在var results=tasks.Select上得到一个错误(t=>t.Result)代码>
错误361“System.Threading.Tasks.Task”不包含定义
对于“Result”且没有扩展方法“Result”接受第一个
找不到类型为“System.Threading.Tasks.Task”的参数(是否为
缺少使用指令或程序集引用?)
t属于任务类型
另外,我对这种并行编码没有太多经验,有什么我做得不对或应该以不同的方式做的吗?问题在于队列<代码>任务
本身没有结果
属性。但是,Task
具有类型为Foo
的Result
属性。(我不知道client.Get(…)
返回什么,现在我们称之为Foo
:
var taskQueue = new Queue<Task<Foo>>();
Task.Factory.ContinueWhenAll(
taskQueue.ToArray(),
tasks =>
{
var results = tasks.Select(t => t.Result);
foreach (var result in results)
{
...
}
});
}