我正在开发一个ASP.NET 4.0 Web窗体项目,经过大约5年的休息,我对提交行为感到困惑。
在按钮的点击事件中,我睡眠线程,以便我可以多次单击提交按钮。
据我所知,ASP.NET阻止了多次调用click事件。这是真的吗?
顺便说一句:我已经为这个测试关闭了javascript。
答案 0 :(得分:9)
“ ASP.NET阻止多次调用click事件。这是真的吗?”
否,实际上发生的事情是您的活动被会话锁定阻止。 (What session is on asp.net,是asp.net上的一个模块,可以为访问该网站的每个用户保存数据)
因此,当您进行提交,并且页面正在运行此提交,然后在第一个重播之前再创建第二个,实际上第二个正在等待第一个完成并解锁会话。
要进行测试并证明会话锁定了您的请求,请关闭会话并再次尝试测试。
相对:
Web app blocked while processing another web app on sharing same session
What perfmon counters are useful for identifying ASP.NET bottlenecks?
Replacing ASP.Net's session entirely
Trying to make Web Method Asynchronous
答案 1 :(得分:0)
否,当您使线程进入睡眠状态时,它将导致会话被阻塞,从而阻止其处理任何其他请求。因此,它产生了这种效果。如果您有一项独立的任务,无需Web请求和响应即可完成,则可以在单独的线程中执行它。这不会阻止您的过程。