2013-03-01 26 views
0

我正在創建一個應用程序,當您單擊一個按鈕時,它會等待10秒鐘並通過SendKeys執行某個按鍵。問題是 - 它需要讓用戶將鼠標指針移至窗口(例如,在Web瀏覽器中選擇一個文本框)。所以,當我嘗試C# - 等到計時器第一次打勾(Visual Studio)

System.Threading.Thread.Sleep(10000); 

它不適合我,因爲它凍結了整個GUI和用戶不能輕易做任何事情。所以,TIMER來了。我需要設置它(讓我們稱之爲timer1)讓用戶等待10秒鐘,啓用timer2,每隔幾秒按鍵組合一次並禁用timer1(本身)。所有這些都不會凍結GUI。當我在Visual Studio中設置定時器間隔時,它似乎完全忽略,它甚至不會立即激活,而是在+ - 50毫秒之後。

有什麼建議嗎? 謝謝。主題http://msdn.microsoft.com/en-us/library/:

+0

一個字使用任務延續 ms173178(v = vs.110).aspx – 2013-03-01 21:39:39

+0

你在網上或Windows窗體中做什麼? – MayogaX 2013-03-01 21:40:09

+0

您是否嘗試製作計時器並訂閱其活動?當然,如果你正確啓動計時器,它應該工作?發佈你如何試圖製作計時器,也許我們可以看到它爲什麼不能按預期工作 – 2013-03-01 21:41:32

回答

0

可以在ButtonClick事件

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

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