C#-等待计时器';s第一个勾号(Visual Studio)

C#-等待计时器';s第一个勾号(Visual Studio),c#,timer,wait,C#,Timer,Wait,我正在创建一个应用程序,当您单击一个按钮时,它会等待10秒钟,然后通过SendKeys执行某个击键。问题是-它需要让用户在整个窗口中移动鼠标指针(例如,在web浏览器中选择一个文本框)。所以,当我尝试 System.Threading.Thread.Sleep(10000); 它对我不起作用,因为它冻结了整个GUI,用户无法轻松完成任何事情。 所以,计时器来了。我需要设置它(我们称之为timer1),让用户等待10秒,每隔几秒钟使用按键组合启用timer2,并禁用timer1(自身)。所有这些

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

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

有什么建议吗? 谢谢。

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

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


有一个词可以告诉你:你在web或windows窗体中执行线程吗?你是否尝试过创建计时器并订阅其事件?当然,如果你正确启动计时器,它会工作吗?贴出你是如何制作计时器的,也许我们可以看到它为什么不能按预期工作分享你的代码。为了更好地理解你的功能?????是的,我使用的是Windows窗体。
private async void button1_Click(object sender, EventArgs e)
{
     await Task.Delay(10000);
     YourMethod();
}