Вы можете использовать для этого простое StopWatch
и Task.Delay
для ожидания требуемого времени, если оно есть.
const int minimumTime = 10_000;
var sw = StopWatch.StartNew();
while (true)
{
// Long-poll the API
var response = await http.GetAsync(buildUri());
...
int difference = minimumTime - sw.EllapsedMiliseconds;
if (difference > 0)
{
await Task.Delay(difference);
}
sw.Restart();
}
Это, однако, только для случая, когда вы хотите 10 секунд между каждым вызовом. Если для завершения API требуется 9 секунд, вы получите 2 вызова в секунду.
Если вы хотите всегда ждать 10 секунд, независимо от того, сколько времени понадобилось для завершения API, просто используйте:
const int waitTime = 10_000;
while (true)
{
// Long-poll the API
var response = await http.GetAsync(buildUri());
...
await Task.Delay(waitTime);
}