阻止用户在.net Windows窗体应用程序中同时单击同一按钮?

时间:2012-11-20 17:51:08

标签: .net vb.net concurrency windows-forms-designer

有没有办法阻止用户在VB.net Windows窗体应用程序中同时单击相同的按钮。

应用程序在本地安装在每台用户计算机上,当有2个或更多用户点击同一个按钮来调用相同的功能或网络服务时,我们遇到了一些问题。

非常感谢

3 个答案:

答案 0 :(得分:3)

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

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

当您处理多个系统或程序之外的多个资源时,您需要认识到没有多少预先检查可以防止竞争条件发生:

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

答案 1 :(得分:0)

您可以使用Remoted Object的状态来启用或禁用该按钮,但我强烈建议您介绍asynchronicity,以便您可以阻止操作,直到其他用户完成对资源的独占使用。

答案 2 :(得分:0)

我建议在服务器端实现像observer这样的设计模式(请参阅http://en.wikipedia.org/wiki/Observer_pattern以获取参考)。你也可以使用单身人士来做。论文只是处理这些问题的现有想法。

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

如果您需要更多信息,请问我会尽量让它更清楚。