【发布时间】:2020-03-30 17:48:58
【问题描述】:
我们注意到,在我们的 Blazor 服务器端应用程序中,用户可能会无意中多次单击按钮。如何使用 Blazor 框架中可用的选项来防止这种情况发生?
只要他们单击按钮,将按钮的文本更改为“处理中...”就可以满足我们的要求,但我不知道如何实现这一点。点击事件的处理程序需要几秒钟来处理。
任何指针?
【问题讨论】:
-
我尝试多次单击一个按钮,但无济于事...这太棒了...并不是说您的用户可以在闲暇时多次单击,但事实上你们已经注意到了这种神秘的现象
-
@biostat:Handler 是什么样子的,是异步的还是异步的?
-
"点击事件的处理程序需要几秒钟来处理。"所以呢 ?让他们慢慢来。您似乎没有理解处理流程:问题不在于事件处理程序执行需要多长时间,而是在单击按钮并遇到第一个等待操作符后立即经过的时间跨度,该操作符将控制权交给调用继续重新渲染组件的代码,从而禁用按钮。这需要几分之一秒。在按钮被禁用之前,任何人的手都无法触发第二次点击。
-
“异步与否”,不相关。你在努力什么?
-
我的问题已经解决,我理解了这个概念,所以让我们关闭这个线程。正如 Henk 猜测的那样,我在实际 await 语句之前有几个同步操作,这导致将控制权交还给调用代码的延迟。我从错误中吸取了教训。