在winforms C#中按下按钮后如何保持布尔变量高2秒

imp*_*101 4 c# visual-studio winforms

目标是在按下按钮后将布尔变量保持在高状态 2 秒。

当 Mouse_Down 事件被触发时,变量应该处于高状态。在 MouseUp 事件被触发后,该变量在接下来的 2 秒内也应该是高的。所以基本上我想在这两个事件之间创建一个延迟。

有没有办法做到这一点?

bool variable;

private void button1_MouseDown(object sender, EventArgs e)
{
   variable = true; // This variable should be true for 2 seconds after mouseUp event is fired.
}

private void button1_MouseUp(object sender, EventArgs e)
{
   variable = False;
}
Run Code Online (Sandbox Code Playgroud)

Mon*_*Zhu 8

您可以使事件异步并使用Task.Delay(2000)等待 2 秒(2000 毫秒),然后将布尔值置于 false 状态:

using System.Threading.Tasks;

private async void button1_MouseUp(object sender, EventArgs e)
{
   await Task.Delay(2000);
   variable = False;
}
Run Code Online (Sandbox Code Playgroud)

这将确保 GUI 保持响应,并且实际上会引入延迟。

这是对异步等待概念的一些补充阅读,可能值得花时间在某一天;)