gpt4 book ai didi

c# - ASP.Net MVC 4 我需要延迟执行

转载 作者:太空狗 更新时间:2023-10-29 18:03:59 27 4
gpt4 key购买 nike

我有一个 ASP.Net MVC 4 应用程序,它定期调用外部 API 获取信息(资源)。该资源有一个帐户速率限制器(意味着其他应用程序使用相同的池并且可能达到限制)。当达到此限制时,它将在几秒内(比如 25 秒)发回带有“Retry-After” header 的 HTTP 状态代码 429。

如果我的应用收到此响应,我将需要延迟执行 25 秒然后重试。首先,让我说一下运行此代码的方法是 ASP.Net 4.5 异步方法。为此,我正在考虑使用 System.Threading.Thread.Sleep(25000) 现在,我真的不喜欢使用它,有没有更好的方法?

我不得不说,对于这个开放式问题,我深表歉意,但我找不到任何关于延迟执行的正确方法(同时保持异步并确保我们不会用完线程)

更新:下面的代码对于延迟会更好吗?

  await Task.Run(() => Thread.Sleep(10000))

最佳答案

您不应使用 Thread.Sleep,因为它会在这段时间内阻塞线程,从而降低您的服务器的可扩展性。您应该改用 Task.Delay它异步等待而不阻塞线程:

await Task.Delay(10000)

Task.Delay 在内部使用 Timer 来完成它。更多信息:Thread.Sleep vs Task.Delay?

关于c# - ASP.Net MVC 4 我需要延迟执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21595657/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com