あなたのコメントに応えて、あなたがやろうとしていることを達成する方法はたくさんあります。
1 つの方法は、アクションが初めて発生した時刻を記録することです (これは を使用して実現できますDateTime.Now
)。その後、記録された時間の 1 秒以内に後続のアクションが発生した場合は、すぐに戻ります。例:
DateTime lastActionTime = DateTime.Now;
// ...
if ((DateTime.Now - lastActionTime).Milliseconds < 1000)
{
// Too soon to execute the action again
return;
}
// Do whatever the action does...
これを行う別の方法として、ボタンを 1 秒間無効にしたい場合はTimer
、.NET Framework にはいくつかのタイマーがあり、ここでは Winforms バージョンを使用しています)。アクションが発生したら、ボタンまたは他の UI 要素を無効にしてからTimer
、1 秒間隔で を開始します。タイマーが切れたら、UI 要素を再度有効にして、ユーザーがアクションを再度実行できるようにします。例:
// In a constructor or something
timer = new System.Windows.Forms.Timer();
timer.Interval = 1000; // 1000 milliseconds
timer.Tick += (s, e) =>
{
button.Enabled = true;
timer.Stop();
};
// ...
void OnButtonClick()
{
button.Enable = false;
timer.Start();
// Do whatever the button does...
}
後者は GUI で使用するもので、前者はゲームなどで使用できます。