在休息了大约 5 年后,我正在开发一个 ASP.NET 4.0 Web 窗体项目,我对提交行为感到困惑。
在按钮的单击事件中,我使线程休眠,以便可以多次单击提交按钮。
据我所知,ASP.NET 阻止了多次调用 click 事件。这是真的?
顺便说一句:我已经为此测试关闭了 javascript。
在休息了大约 5 年后,我正在开发一个 ASP.NET 4.0 Web 窗体项目,我对提交行为感到困惑。
在按钮的单击事件中,我使线程休眠,以便可以多次单击提交按钮。
据我所知,ASP.NET 阻止了多次调用 click 事件。这是真的?
顺便说一句:我已经为此测试关闭了 javascript。
“ ASP.NET 阻止了多次调用 click 事件。这是真的吗? ”
不,实际上发生在你身上的是你的事件被会话锁阻塞了。( asp.net 上的session 是 asp.net上的一个模块,可以为访问该站点的每个用户保存数据)
因此,当您进行提交时,页面正在运行此提交,然后您在第一个重播之前进行第二个,实际上第二个正在等待第一个完成并解锁会话。
要进行测试并证明会话正在锁定您的请求,请关闭会话并重试测试。
相对:
在共享同一会话时处理另一个 Web 应用程序时 Web 应用程序被阻止
哪些性能计数器可用于识别 ASP.NET 瓶颈?
完全替换 ASP.Net 的会话
尝试使 Web 方法异步
不,当你让你的主线程休眠时,它会导致会话被阻塞,从而阻止它处理任何进一步的请求。因此,它产生了这种效果。如果您有一个独立的任务可以在没有 Web 请求和响应的情况下完成,那么您可以在单独的线程中执行它。这不会阻止您的进程。