线程.在Asp.net vNext中睡眠

本文关键字:vNext net Asp 线程 | 更新日期: 2023-09-27 18:26:22

我需要调用一个JSON api,该api每秒只允许有限数量的请求,以确保特定IP不会发生DDOS。请求需要多长时间并不重要,因为这将作为一个自动化的过程在一夜之间完成,但我需要在每个请求之间进行某种暂停,以确保我的IP不会被临时列入黑名单。

现在,我以前会做Thread.Sleep(1000),以确保每秒只发送1个请求,但在asp.net vNext Thread.Sleep中不工作/不存在,所以我不能这样做。

有没有其他更好的方法来处理我需要做的事情?没有批量API,因此每次必须完成1个请求。

提前谢谢。

线程.在Asp.net vNext中睡眠

await System.Threading.Tasks.Task.Delay(1000) 

System.Threading.Tasks.Task.Delay(1000).Wait()

请注意,wait Task.Delay使您的执行线程可被其他工作重用,但thread.Sleep会阻塞。

您缺少一个依赖项。如果您的代码不是异步的,则不应该使用Task.Delay。。。您应该使用Thread.Sleep()或正常。

只需添加以下依赖项:

"System.Threading.Thread": "4.0.0-beta-23516"

然后您可以正常使用Thread.Sleep

当然,如果正在编写异步代码,那么await Task.Delay(...)是合适的——同样,就像正常情况一样。