循环迭代太快,暂停直到下一个窗口可用

时间:2014-03-05 17:04:20

标签: c# api

我正在使用C#While循环和数据读取器来发送通过基于Web的API提取信息的更新。通过我们的订阅,我每30秒只能发送一个请求,但我需要每隔30秒发出一次请求,以便我们及时得到所有响应。

我正在实现我的循环如下:

while (Reader.Read()) {
API_Process(Reader["country"].ToString(), Reader["appStore"].ToString(),     
        Reader["GameType"].ToString(), Reader["RankType"].ToString());
}

有什么建议吗?我几乎绝望地想要一个睡眠命令,但这似乎是不合适的。如果在延迟和延迟不足之间做出选择,那么长期就会胜出。

2 个答案:

答案 0 :(得分:6)

如果您正在寻找对请求进行排队的方法,那么您可以使用timer并设置所需的时间间隔。当计时器到期时,操作系统将唤醒你的线程,你可以在30秒内获得相当不错的分辨率。

P.S。您的代码不是递归 - 它只是迭代(您的标题会产生误导)。

答案 1 :(得分:0)

我这样使用Task.Delay

async Task DoUpdatesAsync(CancellationToken token)
{
    while (Reader.Read()) {
       var delay = Task.Delay(30000, token);

       API_Process(Reader["country"].ToString(), Reader["appStore"].ToString(),     
                Reader["GameType"].ToString(), Reader["RankType"].ToString());

       await delay;
    }
}