次のような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(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' には 'Result' の定義が含まれておらず、タイプ 'System.Threading.Tasks.Task' の最初の引数を受け入れる拡張メソッド 'Result' が見つかりませんでした (ディレクティブまたはアセンブリ参照を使用していますか?)
t はタイプですTask<AntecedentResult>
このページにたどり着きましたが、まだ解決できていません。この非同期タスク メソッドの何が問題になっていますか?
また、この種の並列コーディングの経験はあまりありません。間違っていることや別の方法で行うべきことはありますか?