1

有没有办法防止用户在 VB.net windows 窗体应用程序中同时单击同一个按钮。

在每台用户机器上本地安装的应用程序,当 2 个或更多用户单击同一个按钮调用相同的功能或 Web 服务时,我们会遇到一些问题。

非常感谢

4

3 回答 3

3

您需要在 web 服务(或任何其他共享的中央组件)中处理并充分处理它。

让 Web 服务检测到另一个调用已经开始并返回一个独特的错误代码或其他消息(或等待,然后在第一个请求完成时执行第二个请求)。

当您处理多个系统或程序无法直接控制的多个资源时,您需要认识到,再多的预检查也无法阻止竞争条件的发生:

您可以执行检查(确定没有其他人正在执行操作X)然后尝试执行操作X- 在检查和执行之间的一小部分时间内,其他人可能已经开始执行操作X

于 2012-11-20T18:01:48.557 回答
0

您可以使用远程对象的状态来启用或禁用按钮,但我强烈建议引入异步性,以便您可以阻止操作,直到其他用户完成对资源的独占使用。

于 2012-11-20T17:57:30.697 回答
0

我建议在服务器端实现像观察者这样的设计模式(参见http://en.wikipedia.org/wiki/Observer_pattern以获取参考)。您也可以使用单例来执行此操作。论文只是处理这些问题的现有想法。

在 Observer 中,它将保存一组允许调用方法的对象。当一个正在执行时,您可以通知所有其他人禁用调用它的按钮,并在处理完成时通知回来。

如果您需要更多信息,请询问我会尽量使其更清楚。

于 2012-11-20T18:53:06.443 回答