我可以访问一个特定的 API,该 API 强制执行每秒大约 3 个 API 调用的速度限制。我正在使用 C# 创建一个 Windows 服务,我想如果我只是Thread.Sleep(4000)
在调用之间放置一个“”,这将使每个调用延迟 4 秒。好吧,我有一个“ for
”循环,循环 10 次,用于测试。在一秒钟左右的时间内,它将从 API 中提取的所有 10 条记录插入到我的数据库中。所以,Thread.Sleep(4000)
没有被服从。我读过Thread.Sleep()
它只适用于当前线程。我对线程了解不多,但我希望你们中的一个人能告诉我我做错了什么,或者至少建议一种替代方法来遵守 API 交通法规。这是我的代码的相关部分:
using (SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=*****;Integrated Security=true;"))
{
for (int i = 0; i < 10; i++)
{
movie = api.GetMovieInfo(i);
Thread.Sleep(4000);
if (string.IsNullOrEmpty(movie.title))
continue;
string queryString = string.Format("insert into movie values ('{0}')", movie.title);
SqlCommand command = new SqlCommand(queryString, connection);
try
{
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
}