我想知道如何创建冷却时间以防止人们向按钮发送垃圾邮件。我试过了。
timer1.Interval = 60000; // time is milliseconds lol
timer1.Start();
但是每次1分钟过去了,它自己就一直按着。我想让它在冷却结束后停止。但我对冷却更感兴趣。
我正在使用 C# windows 窗体
答案 0 :(得分:3)
您也可以使用异步任务来完成。
private bool inCooldown = false;
private async void button1_Click(object sender, EventArgs e)
{
if (inCooldown)
return;
inCooldown = true;
// your button click code
await Task.Delay(6000);
inCooldown = false;
}
您也可以使用新线程,但这取决于系统资源。
private bool inCooldown = false;
private void button1_Click(object sender, EventArgs e)
{
if (inCooldown)
return;
inCooldown = true;
Task.Run(async () =>
{
await Task.Delay(6000);
inCooldown = false;
});
// your button click code
}
答案 1 :(得分:2)
您的问题有点令人困惑,但如果我理解正确,使用 Stopwatch
可能是一种更简单且节省资源的方法:
private readonly Stopwatch _stopwatch = new Stopwatch();
private const int _myCoolDown = 60000;
private void Button_Click(object sender, EventArgs e) {
if (!_stopwatch.IsRunning || _stopwatch.ElapsedMilliseconds > _myCoolDown) {
_stopwatch.Start();
_stopwatch.Reset();
// do button click work here
}
}
您可以在您的构造函数或其他地方调用 Start(),我在按钮单击时使用它在第一次单击后启动,仅作为示例。
关于秒表类的更多信息:https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.stopwatch?view=net-5.0
答案 2 :(得分:0)
我用一个简单的脚本解决了我的问题:
timer1.Interval = 60000; // here time in milliseconds // 1 minute = 60000 milliseconds
timer1.Tick += timer1_Tick;
timer1.Start();
button4.Enabled = false;
和
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
button4.Enabled= true;
}