Thread.Sleep在Asp.net vNext中

时间:2015-12-10 14:44:52

标签: c# asp.net asp.net-mvc multithreading asp.net-core-mvc

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

现在我要完成Thread.Sleep(1000)以确保只发送一个请求,但是在asp.net vNext Thread.Sleep没有工作/存在所以我不能这样做。

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

提前致谢。

2 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:3)

你错过了依赖。如果您的代码不是异步,则不应使用Task.Delay ...您应该使用Thread.Sleep()或正常。

只需添加以下依赖项:

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

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

当然,如果您 编写异步代码,那么await Task.Delay(...)也是合适的 - 再次,就像正常一样。