Web应用程序中的异步函数Thread.Sleep

reg*_*gex 5 .net c# asp.net asynchronous

我维护一个ASP.NET Web应用程序,它导致用户的网络连接在执行过程时重置几秒钟.因此,页面请求在用户端超时,因为它们从未收到Web应用程序的响应(连接在获得响应数据包之前就已消失).

为了解决这种情况,我正在考虑让ASP.NET页面执行一个包含A的异步函数.Thread.Sleep(5000); // sleep for 5 seconds before executing the connection reset这样,浏览器在连接重置之前有5秒钟的时间来接收页面的响应.

我担心在ASP.NET中使用Thread.Sleep和异步函数.我以前从未尝试过,所以我不确定它可能造成的潜在问题.有没有人看到启动包含Thread.SleepASP.NET应用程序中的异步线程的潜在问题?如果是这样,你能想到更好的解决方案吗?

Fac*_*Vir 3

将 Thread.Sleep 放在异步方法中可能会导致 ThreadPool Starvation,因为它会阻塞有限数量的线程之一几秒钟 - 该线程可能会停止为客户端请求提供服务。

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