ボタンを無効にするだけでは(buttonBackupNow.Enabled = false;)、ボタンが無効になっている場合でもユーザーがボタンを複数回クリックすると、フォームはクリックを登録し、前のデータ処理ルーチンが終了するとすぐにデータ処理を再開するため、役に立ちません。 。
本当に?どのようにそれを達成しましたか?全く再現できませんでした。ボタンを無効にすると、Click
イベントがトリガーされなくなりました。
これだけで十分です。イベントを切り離す必要はありません(他のトリックを使用する必要もありません)。それに頼る必要がある場合は、他の場所で何かが正しくない可能性があります(おそらく、いくつかのコードがボタンを再度有効にしていますか?)。
ハンドラーを削除しても、その答えに応じてあなた自身が述べたように、あなたにとってはうまくいかないという事実はJustin Harvey
、問題がどこかにあることを私に安心させます。
PS。UXの観点からは、ボタンを無効にする方が、クリックを無視するよりもはるかに優れています。これは、ユーザーに視覚的なフィードバックを提供するためです。コマンドは現在使用できません。「今ではない、私はすでにこのようなことをしている」というメッセージを表示することは、おそらくさらに良いかもしれません。しかし、クリックに反応しないときにボタンをクリック可能のままにしておくのは悪いことです。
更新: OPが問題を明らかにした後(コメントで)
さて、ボタンを押すとすぐに無効にし、データ処理シーケンスが続き、ボタンが終了したらボタンを再度有効にします。しかし、この問題は、データ処理によってアプリケーションが応答しなくなるという事実に関係していると思います。それでも、フォームはクリックを登録し、再度有効にするとボタンが再び押されます。
この操作は非同期で(バックグラウンドスレッドで)実行する必要があります。BackgroundWorkerオブジェクトを使用して、RunWorkerCompletedイベントでボタンを再度有効にします。
それは問題を解決しました。