我正在使用C#While循环和数据读取器来发送通过基于Web的API提取信息的更新。通过我们的订阅,我每30秒只能发送一个请求,但我需要每隔30秒发出一次请求,以便我们及时得到所有响应。
我正在实现我的循环如下:
while (Reader.Read()) {
API_Process(Reader["country"].ToString(), Reader["appStore"].ToString(),
Reader["GameType"].ToString(), Reader["RankType"].ToString());
}
有什么建议吗?我几乎绝望地想要一个睡眠命令,但这似乎是不合适的。如果在延迟和延迟不足之间做出选择,那么长期就会胜出。
答案 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;
}
}