代码之家  ›  专栏  ›  技术社区  ›  regex

异步函数线程。睡眠在Web应用程序中

  •  5
  • regex  · 技术社区  · 14 年前

    我有一个ASP.NET一种web应用程序,当它执行一个过程时,会导致用户的网络连接重置几秒钟。因此,页面请求在用户端超时,因为他们从未收到web应用程序的响应(连接在收到响应包之前就终止了)。

    Thread.Sleep(5000); // sleep for 5 seconds before executing the connection reset 这样,浏览器就有5秒钟的时间来接收页面的响应,然后再重置连接。

    我担心使用线程。睡眠和异步函数ASP.NET不过。我从来没有尝试过这样做,所以我不确定它可能导致的潜在问题。有人看到启动包含 Thread.Sleep 在一个ASP.NET应用程序?如果是这样,你能想出更好的解决办法吗?

    3 回复  |  直到 14 年前
        1
  •  3
  •   FacticiusVir    14 年前

    放置线程。睡眠在异步方法中,线程池可能会导致线程池不足,因为它会将有限数量的线程中的一个阻塞几秒钟—该线程可能会停止为客户端请求提供服务。

    相反,为什么不创建一个5秒后启动的计时器呢?同样的效果,只需在计时器事件中注册延迟的工作。

        2
  •  1
  •   Brent Arias    14 年前

    虽然我觉得你的问题陈述太含糊了,无法恰当地解决,但我可以说你应该使用系统线程计时器而不是睡眠状态。前者是高性能的,后者将使一个CPU内核处于繁忙状态(非常糟糕!)。

        3
  •  1
  •   Nappy    14 年前

    在web服务器上休眠线程通常不是一个好主意,因为线程是有限的。在您的特定情况下,您需要一个客户端,每秒启动约1-2个请求,以阻止所有线程。。。

    你应该像其他人建议的那样,使用计时器,当然也应该使用资源 AsyncPage / AsyncHttpHandler