1

ユーザーが VB.net Windows フォーム アプリケーションで同じボタンを同時にクリックできないようにする方法はありますか。

アプリケーションは各ユーザー マシンにローカルにインストールされています。2 人以上のユーザーが同じボタンをクリックして同じ機能または Web サービスを呼び出すと、いくつかの問題に直面します。

どうもありがとう

4

3 に答える 3

3

Web サービス (ま​​たはその他の共有された中央コンポーネント) でこれに対処し、適切に対処する必要があります。

別の呼び出しが既に開始されていることを Web サービスに検出させ、固有のエラー コードまたはその他のメッセージを返します (または、待機してから、最初の要求が完了したときに 2 番目の要求を実行します)。

複数のシステム、またはプログラムの直接の制御外にある複数のリソースを扱っている場合、事前チェックをいくら行っても競合状態の発生を防ぐことはできないことを認識する必要があります。

チェックを実行して (他の誰もアクションを実行していないことを確認するX)、アクションの実行を試みることができます。Xチェックと実行の間のわずかな時間で、他の誰かがアクションを開始している可能性がありますX

于 2012-11-20T18:01:48.557 に答える
0

サーバー側でオブザーバーのようなデザイン パターンを実装することをお勧めします (参照については、 http://en.wikipedia.org/wiki/Observer_patternを参照してください)。シングルトンを使用してそれを行うこともできます。論文は、これらの問題に対処するための既存のアイデアにすぎません。

オブザーバーでは、メソッドの呼び出しが許可されているオブジェクトのコレクションを保持します。1 つが実行されているときに、それを呼び出すボタンを無効にするように他のすべてに通知し、プロセスが完了したときに通知することができます。

さらに詳しい情報が必要な場合は、お尋ねください。わかりやすくするよう努めます。

于 2012-11-20T18:53:06.443 に答える
0

リモート オブジェクトの状態を使用してボタンを有効または無効にできますが、他のユーザーがリソースの排他的使用を終了するまで操作をブロックできるように、非同期性を導入することを強くお勧めします。

于 2012-11-20T17:57:30.697 に答える