c# – thread.sleep in asp.net [closed]

前端之家收集整理的这篇文章主要介绍了c# – thread.sleep in asp.net [closed]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在模拟我的网站的彗星活动饲料协议,所以在我的控制器中我添加
while(nothing_new && before_timeout){
  Thread.Sleep(1000);
}

但是我注意到,我添加了这个功能后,整个网站都慢了.调试之后,我得出结论,当我调用Thread.Sleep所有的线程,即使在其他请求,被阻止.

为什么Thread.Sleep阻止所有的线程,不仅是当前的,以及如何处理这样的问题?

解决方法

@Servy说的是正确的除了他的答案,我想扔我的2美分.我敢打赌,你正在使用ASP.NET Sessions,并且你正在从同一个会话发送并行请求(例如你发送多个AJAX请求).除了ASP.NET Session不是线程安全的,你不能有来自同一会话的并行请求. ASP.NET将简单地序列化调用并依次执行它们.

这就是为什么你正在观察这个阻挡.它将阻止来自同一ASP.NET会话的请求.如果您从不同的会话发送HTTP请求,则不会阻止.这种行为是设计的,你可以阅读更多关于它here.

ASP.NET会话就像一个癌症,我建议您一旦发现它们被用于Web应用程序,就会禁用它们:

<sessionState mode="Off" />

不再排队现在你有一个可扩展的应用程序.

原文链接:https://www.f2er.com/csharp/93604.html

猜你在找的C#相关文章