线程.在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个请求。
提前谢谢。
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(...)
是合适的——同样,就像正常情况一样。