C# - 等到计时器第一次打勾(Visual Studio)

时间:2013-03-01 21:38:08

标签: c# timer wait

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

System.Threading.Thread.Sleep(10000);

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

有什么建议吗? 感谢。

1 个答案:

答案 0 :(得分:0)

您可以在按钮Click事件中使用任务继续

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

private async void button1_Click(object sender, EventArgs e)
{
     await Task.Delay(10000);
     YourMethod();
}