En raison de la limitation de 180 sur Twitter, une demande par 15 minutes. J'ai fait cette implémentation et retarder la tâche. Mais cela ne semble pas fonctionner. Quel est le problème avec cela?Mise en œuvre du délai avec tâche
Ce que j'ai implémenté est en fait donner 15 minutes d'attente après 180 demande. Si ma mise en œuvre est correcte?
var currentRequestIndex = 1;
var timeToDelay = 0;
foreach (var item in items)
{
var contactFeed = item;
if(currentRequestIndex % 180 == 0)
{
timeToDelay = currentRequestIndex*5000;
}
Delay(timeToDelay * 5000).ContinueWith(_ => Task.Factory.StartNew(
() =>
-- call to twitter api here
));
currentRequestIndex++;
}
public Task Delay(int milliseconds)
{
var tcs = new TaskCompletionSource<object>();
new Timer(_ => tcs.SetResult(null)).Change(milliseconds, -1);
return tcs.Task;
}
Merci, Ce que vous avez fait va ajouter un délai pour chaque demande non? Ce dont j'ai vraiment besoin au 1er 15 min 180 demande peut être faite. puis 2ème 15 min une autre demande de 180 peut être faite. J'ai mis en place de cette manière. –
Vérifier mes modifications. Je pensais que tu essayais de faire ce que ma première solution fait. Quoi qu'il en soit, les deux ci-dessus suffiront, mais la solution 2 est meilleure car elle n'utilise qu'un seul 'Task' pour 180 requêtes. –
+1 Salut merci encore. Avec la solution 2, comment fera-t-il seulement 180 demandes par 15 minutes? Pouvez-vous expliquer le code? Je n'ai vu aucun chèque pour 15 minutes et 180 demandes. –