c# – thread.sleep in asp.net [closed]
发布时间:2020-12-15 03:51:47 所属栏目:百科 来源:网络整理
导读:我正在模拟我的网站的彗星活动饲料协议,所以在我的控制器中我添加 while(nothing_new before_timeout){ Thread.Sleep(1000);} 但是我注意到,我添加了这个功能后,整个网站都慢了.调试之后,我得出结论,当我调用Thread.Sleep所有的线程,即使在其他请求,被阻止.
我正在模拟我的网站的彗星活动饲料协议,所以在我的控制器中我添加
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请求,则不会阻止.这种行为是设计的,你可以阅读更多关于它 ASP.NET会话就像一个癌症,我建议您一旦发现它们被用于Web应用程序,就会禁用它们: <sessionState mode="Off" /> 不再排队现在你有一个可扩展的应用程序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |