私は WinForms アプリに取り組んでおり、その中にユーザー コントロールがあります。ユーザー コントロール内のボタンは、他のコードによって処理されるフォームまでのイベントを発生させます。ボタンの 1 つは、同時に実行すると問題を引き起こすいくつかのプロセスを開始します。状態を管理するためのロジックがコードに含まれているため、通常、プロセスが既に実行されている場合、ユーザーはプロセスを実行できません。ただし、ユーザーがボタンをダブルクリックすると、プロセスが 2 回開始されるので、それを防ぐのは困難です。
これを処理する最善の方法は何ですか?
クリックイベントでボタンを無効にすることから始めましたが、最初のクリックでボタンが無効になる前に2番目のクリックが発生しました。コードで他のフラグを設定しても、キャッチされませんでした。
イベントを発生させるコードに何らかの同期ロックを追加することを検討していますが、より良いアイデアがあるかどうか疑問に思っています。
このプロジェクトはほぼ完了しているので、アプリの根本的な書き直し (複合アプリケーション ブロックの実装など) を含まない回答を探していますが、次のプロジェクトで使用できるので、それらのアイデアも自由に投稿してください。 .