0

我正在创建一个应用程序,当您单击一个按钮时,它会等待 10 秒并通过 SendKeys 执行某个击键。问题是 - 它需要让用户在窗口中移动他的鼠标指针(例如在网络浏览器中选择一个文本框)。所以,当我尝试

System.Threading.Thread.Sleep(10000);

它对我不起作用,因为它冻结了整个 GUI,用户无法轻松地做任何事情。所以,有TIMER。我需要设置它(让我们称之为 timer1)让用户等待 10 秒,每隔几秒使用按键组合启用 timer2 并禁用 timer1(本身)。所有这些都无需冻结 GUI。当我在 Visual Studio 中设置计时器间隔时,它似乎完全忽略了,它甚至没有立即激活,而是在 +- 50 毫秒后激活。

有什么建议么?谢谢。

4

1 回答 1

0

您可以在 buttonClick 事件中使用任务延续

Task.Delay(10000)
    .ContinueWith(_ => YourMethod(), 
               TaskScheduler.FromCurrentSynchronizationContext());

或者

private async void button1_Click(object sender, EventArgs e)
{
     await Task.Delay(10000);
     YourMethod();
}
于 2013-03-01T21:43:59.817 回答