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