我在写一个Windows Store应用程序,它将依赖于JSON api。 API的提供者要求每秒不超过1个API请求。每秒执行一次任务的最佳方式是什么?
所以我创建了一个类,让我来排队的阻隔队列中的请求,并在后台线程它会运行一个循环,如下所示:
Loop
{
// this will block until a request is added to the queue
MyRequest = Queue.Take()
// Create task to make the api request here.
Thread.Sleep(1000)
}
通过这种方式,它会等待在尝试将另一个请求出队之前至少还有一秒。
我发现Thread.Sleep不适用于Windows应用商店。 Task.Delay()似乎不必要的浪费,因为每次调用它时都会创建一个新任务。
我觉得可能有一种已知的方式来做到这一点,我不知道?
感谢,
任务非常轻量级,在.NET 4.5/Core中更是如此。 –